3

ファイル拡張子をパラメーターとしてメソッドに渡すことで、マルチメディア タイプの TCM URI を取得したいと考えています。以下は私が使用しているコードですが、例外が発生します:-

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;

}

上記のメソッドへの呼び出し:-

FileExtensionsList list = new FileExtensionsList();
list.Add("js");

GetMultimediaTypeTCMURI(list);

上記のコードで「シーケンスに一致する要素が含まれていません」という例外が発生しています。誰でもこれを行う方法を提案してください。

4

1 に答える 1

9

Sequence contains no matching elementLinq 式に一致するものがない場合にスローされます。私が見ているのは、拡張機能のリストを一致させようとしているということです:

mt => ((MultimediaTypeData)mt).FileExtensions == lFileExtensions

これは、マルチメディア タイプのファイル拡張子が と正確に一致し、lFileExtensions順序も同じであることを意味します。代わりに、必要なファイル拡張子を 1 つだけ指定して検索してみてください。

mt => ((MultimediaTypeData)mt).FileExtensions.Contains(myFileExtension)

SingleOrDefaultの代わりにメソッドを使用することも検討してくださいSingle。例外はスローしませんがnull、一致しない場合は戻ります。後でマルチメディア タイプを確認できます。null

于 2012-09-26T07:16:39.607 に答える