1

フィルタリングしたい KeyValue ペアのリストが 2 つあります。

値がリスト A のキー値と異なる場合、リスト B からキーと値のペアを取得したいと思います。

List A      List B 
<a,1>       <b,4>
<b,2>       <c,5>
<c,3>

したがって、上記の 2 つのキーと値のペアのリストをフィルター処理すると、次のようになります。

List c
<b,4>
<c,5>

foreach ループを使用して個々のキー値をチェックすることなく、これは可能ですか?

4

2 に答える 2

3

Join both lists by keys, then select those items, which have different values:

from kvpA in listA
join kvpB in listB on kvpA.Key equals kvpB.Key
where kvpA.Value != kvpB.Value
select kvpB

Lambda syntax:

listA.Join(listB, 
           kvpA => kvpA.Key, 
           kvpB => kvpB.Key, 
           (kvpA, kvpB) => new { kvpA, kvpB })
     .Where(x => x.kvpA.Value != x.kvpB.Value)
     .Select(x => x.kvpB)
     .ToList()
于 2013-10-03T12:07:33.270 に答える