-2

col1 と col2 の 2 つのコレクションがあります。col1 からレコードを選択したいのですが、col2 では一致しません。col1 には 0 から 6 まであり、col2 には 1 から 6 までの数値があります。col2 では 0 が一致しないため、0 が必要です。

両方のコレクションに同じ型がなく、両方のコレクションにフィールド ID があります。

私は c# 4.0(Linq) を使用しています。

4

3 に答える 3

4

Exceptメソッドが必要です:

var yourResult = col1.Except(col2);

両方のコレクションが同じタイプでない場合は、よりコストのかかるO(nm)検索を行う必要があります。

var selectedTwo = col2.Select(x => x.ID).ToHashSet();
var yourResult = col1.Where(n => !selectedTwo.Contains(n.ID));

そして、あなたのコードのどこかで:

public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source)
{
    return new HashSet<T>(source);
}
于 2013-07-17T07:24:08.230 に答える