0

これら 2 つの汎用リストを比較し、ID ごとに一致するデータを取得する方法

List<int> _GetRecCust;
List<Tranobject> GetTransDeta;

私は試した

var TransactionsToProcess = GetTransDeta.Where(x => _GetRecCust.Contains(Convert.ToInt32(x.ID)));

IDしかし、コマンドデータを取得できません。

どちらもIDフィールドとして持っています。

前もって感謝します

4

2 に答える 2

5

最も効率的なアプローチは、以下を使用することEnumerable.Joinです。

var common = from x in GetTransDeta
             join id in _GetRecCust
             on int.Parse(x.Id) equals id
             select id;
List<int> commonIDs = common.ToList();

ところで、なぜTranobject.Id文字列なのですか?

編集:sがあるとコメントしたのでnull、最初に使用できますIsNullOrWhiteSpace

var common = from x in GetTransDeta
             where !string.IsNullOrWhiteSpace(x.Id)
             join id in _GetRecCust
             on int.Parse(x.Id) equals id
             select id;  
于 2013-11-06T13:33:13.150 に答える
2

これを試して:

GetTransData.Where(gtd => _GetRecCust.Any(grc => grc == int.Parse(gtd.Id))).ToList();
于 2013-11-06T13:33:31.620 に答える