-3

テーブル内の特定のグループに属する要素を選択するには、要素とそのグループ タイプが 1 つのテーブルに含まれ、すべてのグループ タイプが別のテーブルにリストされている場合、テーブルで除算を実行します。LINQ クエリで同じ操作を実行しようとしています。どうすれば実行できるか教えてください。

4

2 に答える 2

1

どうやらそのブログ投稿の定義から、交差して除外したいと思うでしょう。

Table1.Except(Table1.Intersect(Table2));

またはむしろあなたの場合、私は推測します

Table1.Where(d => !Table2.Any(t => t.Type == d.Type));

それほど難しくありません。

実際、パフォーマンスを大幅に向上させることはできないと思います。多分groupbyで。

Table1.GroupBy(t => t.Type).Where(g => !Table2.Any(t => t.Type == g.Key)).SelectMany(g => g);

これにより、パフォーマンスが向上するはずです。Table1 のすべての行ではなく、すべての種類の 2 番目のテーブルのみを検索します。

于 2013-08-10T18:24:21.943 に答える
0

あなたが何を求めているのかを正確に判断するのは少し難しいです。しかし、2 つのテーブルまたはストリームに共通する要素を特定しようとしているように思えます。もしそうなら、インターセクトが欲しいと思います。

こちらをご覧ください

次のように機能します。

int[] array1 = { 1, 2, 3 };
int[] array2 = { 2, 3, 4 };
var intersect = array1.Intersect(array2);

2 と 3 を返します。

これの反対は、Except() です。

于 2013-08-10T17:47:32.923 に答える