System.NotSupportedExceptionをスローするLINQコードの行があります。
return unconvertedUrls
.Select(potentialQueryURL => ConvertPotentialQueryURLToSeed(potentialQueryURL))
.Where(id => id > 0)
.ToList();
例外メッセージは、「メソッド'Int32 ConvertPotentialQueryURLToSeed(SeedsSQLConnector.PotentialQueryURL)'にはサポートされているSQLへの変換がありません」です。
ただし、foreachループへの単純な変換は問題なく実行されます。
var result = new List<int>();
foreach (var potentialQueryURL in unconvertedUrls)
{
var id = ConvertPotentialQueryURLToSeed(potentialQueryURL);
if (id > 0)
{
result.Add(id);
}
}
return result;
何が問題になっているのか、そしてその理由は何ですか?
==========編集==========
奇妙なことに、同僚は、同様に機能する別の修正を提案しました。LINQがConvertPotentialQueryURLToSeedをデータベースに渡していたようです。とにかく、これがもう1つの修正です。これは、前のステートメントに.ToList()を追加することです。
var unconvertedUrls = (from url in _DataContext.PotentialQueryURLs
where !convertedUrlIds.Contains(url.Id)
select url).ToList();
return unconvertedUrls
.Select(potentialQueryURL => ConvertPotentialQueryURLToSeed(potentialQueryURL))
.Where(id => id > 0)
.ToList();