gpt4 book ai didi

sql-server - 在EF6中搜索任何数据类型的文本的最有效方法是什么?

转载 作者:行者123 更新时间:2023-12-03 01:00:38 28 4
gpt4 key购买 nike

我尝试动态创建一些LINQ查询来搜索所有列中的数据。



当前,我使用以下代码构建动态LINQ查询。但是,当处理复杂的列时,这是很麻烦的。

var type = property[col.ToLower()].PropertyType;
var isNullableType = type.IsGenericType && type.GetGenericTypeDefinition() == typeof (Nullable<>);

if (type.IsValueType && !isNullableType)
{
filter += col + ".ToString().ToLower().Contains(@" + i + ".ToLower())";
}
else if (isNullableType)
{
filter += col + ".HasValue ? " + col + ".Value.ToString().ToLower().Contains(@" + i + ".ToLower())" + " : false";
}
else
{
filter += "(" + col + " != null ? " + col + " : \"\").ToString().ToLower().Contains(@" + i + ".ToLower())";
}


您有什么想法可以简化我的上述代码吗?如果您的建议仅适用于SQL Server 2008或更高版本,我很好。

注意:
列数据可以是任何类型,例如整数,字符串,对象,枚举,并且可以为null。

最佳答案

如果要编写一个实现关键字样式搜索的Entity Framework查询,该查询返回包含描述的一部分或全部给定关键字集的行,则可以使用PredicateBuilder

要从字符串创建动态谓词,请阅读:

Using a string where clause with PredicateBuilder in LinqPad for creating dynamic where clause

LINQ and Dynamic Predicate Construction at Runtime

关于sql-server - 在EF6中搜索任何数据类型的文本的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27609251/

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