クラスの IEnumerable コレクションと、同じものを返す関数を含む 2 つ目の IEnumerable コレクションがあります。例えば:
IEnumerable<MyClass1> list1;
IEnumerable<MyClass2> list2;
MyClass2 には MyClass1 の内部コレクションが含まれており、次のような機能があります。
Public MyClass2
{
private IEnumerable<MyClass1> internalCollection;
public IEnumerable<MyClass1> ReturnDuplicates(IEnumerable<MyClass1> duplicates
{
return internalCollection.Where(l => duplicates.Select(d => d.ID).ToString() == l.ID.ToString());
}
...
}
次に、2つを比較する関数があります。
// Function to return a flag indicating if the two lists contain
// any of the same data
public bool CheckDuplicates(IEnumerable<MyClass1> col1, IEnumerable<MyClass2> col2)
{
// The following check is wrong as it returns null
IEnumerable<MyClass1> dupe =
col2.Where(w => w.ReturnDuplicates(col1).Count() != 0)
as IEnumerable<MyClass1>;
return (dupe.Count() != 0);
}
上記の CheckDuplicates() のステートメントは null を返します。ただし、即時ウィンドウでは:
col2.First().ReturnDuplicates(col1).Count()
1 を返します
問題の原因はわかっていると思います - ステートメントが戻ってきました
IEnumerable<MyClass2>
この種のチェックは foreach ステートメントなしで可能ですか?