C# c过滤器搜索,多个搜索框
这是我目前处理多个搜索框的解决方案。它是一个搜索功能,将两个或多个文本字段组合到一个搜索中。所以我的问题是:这是过滤传递的搜索字符串的好方法吗。当查询是小数而不是字符串时,如何使用它?谢谢您可以尝试在搜索框上使用foreach循环,修改linq,以实现其中任何一种C# c过滤器搜索,多个搜索框,c#,asp.net,C#,Asp.net,这是我目前处理多个搜索框的解决方案。它是一个搜索功能,将两个或多个文本字段组合到一个搜索中。所以我的问题是:这是过滤传递的搜索字符串的好方法吗。当查询是小数而不是字符串时,如何使用它?谢谢您可以尝试在搜索框上使用foreach循环,修改linq,以实现其中任何一种 List<LICENSE> licenseList = context.LICENSE.Where(l => ( string.IsNullOrEmpty(licenseID) || l.LICENSE_ID.Con
List<LICENSE> licenseList = context.LICENSE.Where(l => ( string.IsNullOrEmpty(licenseID) || l.LICENSE_ID.Contains(licenseID) ) && ( string.IsNullOrEmpty(hardwareID) || l.HARDWARE_ID.Contains(hardwareID) ) ).Take(10).ToList();
是的,看起来不错。您也可以使用如下循环:
object[] a = {"seach", 5}; // "Data"
string[] Search = { "asdf", "asdf" }; //Search boxes
var s = a.Where(l => ((string)l).Contains(Search[0])); //first search
for (int i = 1; i < Search.Length; i++) //consecutive searches
s = s.Where(l => ((string)l).Contains(Search[i]));
stringVariables可以是预定义的,也可以是某种算法来决定它是否是搜索字段
关于数字,假设列的类型为int,那么如果它是一个字符串,则不必更改任何内容,根据搜索表单,可能有一个可为空的数字。因此,您还必须检查它是否为空,以及它是否是正确的数字。您可能希望将其强制转换为字符串以同时具有Contains函数。但这一切都取决于您的应用程序。您的示例非常好 关于小数: 如果它是一个可为null的类型,那么您首先必须检查它是否有值,如果有值,则它不是十进制的默认值,即0 如果它不是一个可为null的类型,那么您所要做的就是检查它是否为默认类型。基于许可证不会为负值的假设,我总是检查以确保它大于零 我将假设它不是一个可为null的类型,因为它似乎是一个内联声明的var,所以下面是一个十进制的格式化示例:
var query = context.LICENSE;
foreach(var item in stringVariables) {
query = query.Where(x => string.IsNullOrEmpty(item) || l.LICENSE_ID.Contains(item));
}
@jnr:你说我不必按弦投是什么意思?我的int类型没有包含函数。如何使用ints实现Contains功能?您需要对System.Linq的引用;Compare使用System.Collections.Generic.IEqualityComparer,这意味着无论它将比较什么类型的列表,只要您提供与列表相同的类型,而不仅仅是字符串。我想您所有的答案都是正确的,但我接受这一点。感谢你们的帮助,尽管我自己几乎解决了这个问题:
List<LICENSE> licenseList =
context.LICENSE.Where(l => licenseID == 0 || l.LICENSE_ID.Contains(licenseID))
.Where(l => hardwareID == 0 || l.HARDWARE_ID.Contains(hardwareID))
.Take(10)
.ToList();
licenseID == default(decimal)