首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过文件扩展名获取多媒体类型的中医URI

如何通过文件扩展名获取多媒体类型的中医URI
EN

Stack Overflow用户
提问于 2012-09-26 15:05:01
回答 1查看 260关注 0票数 3

我想通过将文件扩展名作为参数传递给方法来获取多媒体类型的TCM。下面是我正在使用的代码,但我得到了一些异常:

代码语言:javascript
复制
private static string GetMultimediaTypeTCMURI(FileExtensionsList lFileExtensions)
{
    string lTCMURI = "";
    try
    {
        SessionAwareCoreService2010Client client 
                                          = new SessionAwareCoreService2010Client();
        client.ClientCredentials.Windows.ClientCredential.UserName = "myUserName";
        client.ClientCredentials.Windows.ClientCredential.Password = "myPassword";
        client.Open();
        FileExtensionsList list = new FileExtensionsList();
        var mmType = client.GetSystemWideList(new MultimediaTypesFilterData())
              .Single(mt => ((MultimediaTypeData)mt).FileExtensions == lFileExtensions);
        lTCMURI = mmType.Id;
    }
    catch (Exception e)
    {
        throw new Exception("Please check either Mimetype" 
              + lFileExtensions + "is wrong or Mimetype does not exist in SDL Tridion.");
    }
    return lTCMURI;

}

调用上面的方法:-

代码语言:javascript
复制
FileExtensionsList list = new FileExtensionsList();
list.Add("js");

GetMultimediaTypeTCMURI(list);

我得到了“序列包含没有匹配的元素”异常与上述代码,任何人请建议如何做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-26 15:16:40

如果没有与您的Linq表达式匹配,则抛出Sequence contains no matching element。我看到的是,您正在尝试匹配扩展名列表:

代码语言:javascript
复制
mt => ((MultimediaTypeData)mt).FileExtensions == lFileExtensions

这意味着多媒体类型的文件扩展名应该与您的lFileExtensions完全匹配,甚至应该具有相同的顺序。相反,尝试仅按所需的一个文件扩展名进行搜索:

代码语言:javascript
复制
mt => ((MultimediaTypeData)mt).FileExtensions.Contains(myFileExtension)

也可以考虑使用SingleOrDefault方法而不是Single。它不会抛出异常,但如果没有匹配,则返回null。您可以稍后检查null的多媒体类型

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12596309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档