gpt4 book ai didi

c# - 在运行时在 LINQ 查询中编写 where 子句

转载 作者:太空狗 更新时间:2023-10-29 23:18:53 26 4
gpt4 key购买 nike

我得到一个字符串数组,我想查看域对象中一定数量的数据字段是否包含所有这些字符串。我知道编译时的数据字段,但不知道编译时数组的大小。

有没有一种方法可以让我在运行时编写一个 where 子句,以便我可以在单个 linq 查询中执行我要查找的操作。

如果您想知道为什么它是单个查询:我想尽可能减少到数据库的往返行程。

public IEnumerable<domainObjects> GetObjectsWith(string[] data)
{
var results = from d in domainObjects
where
(d.Data.Contains(data[0]) && d.Data.Contains(data[1]) && ...)
||
(d.Data2.Contains(data[0]) && d.Data.Contains(data[1]) && ...)
.
.
. // Data fields known at compile-time
}

最终结果是,给定 2 个对象:

domainObject  { Address = "1st st", Description="has couch and bed" }
domainObject2 { Address = "1st rd", Description="has couch" }

{ "couch", "bed"} 的查询只会返回域对象 1,而 { "couch"} 的查询会返回两者。

Likeqise 查询 { "1st", "couch", "bed"} 也会返回两者。

最佳答案

您应该使用 PredicateBuilder,它是一个免费的实用程序类,允许您在运行时使用 And 和 Or 构造复杂的 where 子句。您可以遍历数组并以此方式构建 where 子句。

http://www.albahari.com/nutshell/predicatebuilder.aspx

关于c# - 在运行时在 LINQ 查询中编写 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3688147/

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