如何使用第二个表达式只选择第一个带有ID的那个?
var list1= from x in objects select x.id;
results=results.Where(r=>r.id== ???? )
我希望结果只是那些来自listA
的idTIA
编辑:我的立场得到了纠正,还有另一个问题导致我将单独提出问题。
答案 0 :(得分:4)
像这样...
results.Where(r=>list1.Contains(r.id))
答案 1 :(得分:4)
results = results.Where(r => list1.Contains(r.id));
答案 2 :(得分:4)
有点猜测(还没试过运行它),但是:
var filteredResults = from obj in objects
join result in results on obj.id equals result.id
select result;
请注意,这应该替换您问题中的两行代码。
答案 3 :(得分:2)
如果你想要一些性能(list.Contains()具有O(n)复杂度)你可以使用
var ids = objects.ToDictionary(o => o.id);
results.Where(o => ids.ContainsKey(o.id));
答案 4 :(得分:0)
也许你想要这个呢?
results.Where(r => objects.Any(o => o.id == r.id))
答案 5 :(得分:0)
如果您始终只需要第一个元素的ID,您可以将其存储到变量并将其用于lambda表达式
var results= from x in objects select x.id;
int firstID = results.First().id ;
results=results.Where(r=>r.id== firstID )
或者,直接使用:
var results= from x in objects select x.id;
results=results.Where(r=>r.id== results.First().id )