3

次のシナリオがあります。

データ ソースからレコードのコレクションを取得し、リストに追加します

List<Entity> e = new List<Entity>();
foreach (var elm in datasource)
{
      e.Add(new Entity { First = elm.First, Second = elm.Second, Third = elm.Third });
}

これは私に次のようなものを与えます:

// -> First = John, Second = Sally, Third = Ingrid
// -> First = Sally, Second = Ingrid, Third = James
// -> First = Ingrid, Second = Sally, Third = James

リストに、真になる可能性のある値と負になる可能性のある値の配列があります

List<string> positives = { "John", "Sally" }
List<string> negatives = { "Ingrid", "James" }

上記のように、ジェネリックリストeにあるポジティブの量とネガティブの量を一致させるエレガントな理由を探していますか? このようなことが LINQ で可能でしょうか?

私は LINQ に慣れていないので、どこから始めればよいかわかりません。私は次のようなものを試しました:

var pos = e.SelectMany(s => s in positives).Count()

しかし、これは例外をスローします。

どんな助けでも大歓迎です

4

3 に答える 3

3

LINQの SQL のin句はContainsメソッドです。

テスト:

var pos = e.SelectMany(s => positives.Contains(s)).Count();

私はあなたの質問を理解していないようです。再読。

正直なところ、あなたの質問は言い回しがよくありません。
しかし、私が理解したことに基づいて、正しい応答は次のとおりだと思います。

var pos = e.SelectMany(i => positives.Contains(i.First) 
                            || positives.Contains(i.Second) 
                            || positives.Contains(i.Third)).Count();
于 2013-11-15T09:55:57.750 に答える
0

または、任意のを使用できます

var pos = e.SelectMany(i => 
    positives.Any(p=> p==i.First || p==i.Second || p==i.Third))
    .Count();
于 2013-11-15T10:06:54.190 に答える