用于组合列表的 lambda 扩展

发布于 2024-07-24 05:58:51 字数 238 浏览 4 评论 0原文

如何使用第二个表达式仅选择第一个表达式中具有 ID 的表达式?

 var list1= from x in objects select x.id;


 results=results.Where(r=>r.id==  ????  )  

我希望结果只是那些来自 listA

tia

的 id编辑:我已更正,还有另一个导致问题的问题,我将单独询问。

how do i use the second expression to select only those with ID from the first?

 var list1= from x in objects select x.id;


 results=results.Where(r=>r.id==  ????  )  

I want the results to be only those with id from listA

tia

EDIT:i stand corrected, there was another issue causing problem which i will ask about separately.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

顾冷 2024-07-31 05:58:51

有点猜测(还没有尝试运行它),但是:

var filteredResults = from obj in objects 
                      join result in results on obj.id equals result.id
                      select result;

请注意,这应该替换您问题中的两行代码。

A bit of a guess (haven't tried running it), but:

var filteredResults = from obj in objects 
                      join result in results on obj.id equals result.id
                      select result;

Note that this should replace both the lines of code you have in your question.

就像这样...

results.Where(r=>list1.Contains(r.id))

Like so...

results.Where(r=>list1.Contains(r.id))
放低过去 2024-07-31 05:58:51
results = results.Where(r => list1.Contains(r.id));
results = results.Where(r => list1.Contains(r.id));
弥繁 2024-07-31 05:58:51

如果你想要一些性能(list.Contains() 的复杂度为 O(n)),你可以选择

var ids = objects.ToDictionary(o => o.id);

results.Where(o => ids.ContainsKey(o.id));

If you want some performance (list.Contains() has an O(n) complexity) you could go with

var ids = objects.ToDictionary(o => o.id);

results.Where(o => ids.ContainsKey(o.id));
紫瑟鸿黎 2024-07-31 05:58:51

也许你想要这个?

results.Where(r=> 对象.Any(o => o.id == r.id) )

Maybe you want this then?

results.Where(r=> objects.Any(o => o.id == r.id) )

何时共饮酒 2024-07-31 05:58:51

如果您总是只需要第一个元素的 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  )

If You always need only the first element's ID , You can store it to variable and use it to lambda expression

var results= from x in objects select x.id;
int firstID = results.First().id ;
results=results.Where(r=>r.id==  firstID  )

Or, use directly like this:

var results= from x in objects select x.id;
results=results.Where(r=>r.id==  results.First().id  )
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文