gpt4 book ai didi

c# - 使用 LINQ Contains 或其他搜索多个字段

转载 作者:太空狗 更新时间:2023-10-30 00:19:45 25 4
gpt4 key购买 nike

我正在使用 LINQ 在单个短语上搜索多个字段,并且我正在使用 Contains() 来执行此操作。直到今天,当我注意到 find 方法无法正常工作时。

所以我希望能够搜索每个有匹配项的字段。我在 Google 上和通过 SO 进行了一些搜索,发现了使用 Any()?有人有什么建议吗?

var l = _getData().Select(_marshallData).ToList();
return l.Where(x => x.Name.Contains(what) || x.Pumpkin.Contains(what) || x.Orange.Contains(what) || x.Tomato.Contains(what)).ToList();

请原谅这些愚蠢的字段名称,出于保密考虑,我不得不更改它们。

最佳答案

由于您已经在具体化数据,因此您可以这样做:

var l = _getData().Select(_marshallData).AsEnumerable();
return l.Where(x => new[] { x.Name, x.Pumpkin, x.Orange, x.Tomato }.Any(s => s.Contains(what)));

但是,如果您使用的是 ORM(如 Entity Framework ),则此技巧可能不起作用(因为很有可能无法将其转换为 SQL 表达式)。在这种情况下,您的原始解决方案很好,但在具体化数据之前执行此操作可能会更好。

return _getData()
.Where(x =>
x.Name.Contains(what) || x.Pumpkin.Contains(what) ||
x.Orange.Contains(what) || x.Tomato.Contains(what))
.Select(_marshallData)
.AsEnumerable();

当然这里的字段名称可能不同,因为参数 x可能是不同的类型。没有进一步的信息,由您来正确编写此过滤器。

请注意,在这两个示例中,我都消除了对 ToList 的调用.除非你绝对需要 List<T> 的结果这可能是不必要的。

关于c# - 使用 LINQ Contains 或其他搜索多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16993962/

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