gpt4 book ai didi

c# - 使用 LINQ,如何有条件地选择某些项目但没有条件选择全部?

转载 作者:太空狗 更新时间:2023-10-29 22:16:38 26 4
gpt4 key购买 nike

我想使用 myFilters 过滤从 myCollection 中选择元素:

var myFilters = new List<string> {"111", "222"};
var myCollection = new List<SomeClass> {
new SomeClass ("111"),
new SomeClass ("999")
};

from filter in myFilters
from item in myCollection
where item.Name == filter
select item

将返回“111”项目。

但是,如果 myFilters 为空,我想返回 myCollection 中的所有项目。

var myFilters = new List<string> ();
var myCollection = new List<SomeClass> {
new SomeClass ("111"),
new SomeClass ("999")
};

// Here's where I'm lost...
from filter in myFilters
from item in myCollection
where item.Name == filter
select item

将返回所有项目(“111”和“999”)。

最佳答案

如果这些集合的规模很大,那么我建议使用联接。它看起来像这样:

var result = 
myFilters.Any() ?
from item in myCollection
join filter in myFilters
on item.Name equals filter into gj
where gj.Any()
select item
: myCollection;

使用联接的机会很容易被忽视。当列表非常大时,这种连接方法将优于包含方法。如果它们很小并且性能可以接受,则使用看起来最清晰的那个。

关于c# - 使用 LINQ,如何有条件地选择某些项目但没有条件选择全部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12397880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com