-1

2 つの一般的なリストがあります。ほとんどの分野が異なりますが、共通する分野が 4 つあります。「平等」の定義として、これらの 4 つのフィールドを使用して、リストの 1 つに含まれているが、他のリストには含まれていないアイテムのリストを取得したいと考えています。

これが問題を解決するための私の試みでした。

var unMatchedData = from liveLines in liveList
    join oldList in comapreSnapshotList
    on new {liveLines.ClientNo, liveLines.SequenceNo, liveLines.LineNo, liveLines.Text} equals
    new {oldList.ClientNo, oldList.SequenceNo, oldList.LineNo, oldList.Text}
    select new KNOWTXTS
    {
        ClientNo = liveLines.ClientNo,
        SequenceNo = liveLines.SequenceNo,
        LineNo = liveLines.LineNo,
        Text = liveLines.Text
    };
4

1 に答える 1

1

Exceptセットの違いを見つけるために使用できます。

var newElements = liveList.Select(l => new {
                      l.ClientNo, l.SequenceNo, l.LineNo, l.Text
                  });
var oldElements = comapreSnapshotList.Select(l => new {
                      l.ClientNo, l.SequenceNo, l.LineNo, l.Text
                  });
var newElementsInNew = newElements.Except(oldElements);
var deletedFromNew   = oldElements.Except(newElements);


// if you need the original object in the list 
var newElements = from obj in liveList 
                  join newEle in newElementsInNew 
                  on new {obj.ClientNo, obj.SequenceNo, obj.LineNo, obj.Text} equals newEle
                  select obj;
var deletedElements = from obj in comapreSnapshotList
                  join deletedEle in deletedFromNew   
                  on new {obj.ClientNo, obj.SequenceNo, obj.LineNo, obj.Text} equals deletedEle
                  select obj;
于 2012-09-13T15:36:20.093 に答える