gpt4 book ai didi

linq - LINQ 中的条件多字段搜索和过滤

转载 作者:行者123 更新时间:2023-12-04 16:37:40 33 4
gpt4 key购买 nike

假设我们有下表:

Person:
PersonID,
Name,
Age,
Gender

并且我们提供了一个搜索功能,允许用户根据名称 来搜索表。和/或 年龄。

编写 SQL(或 LINQ)查询的棘手部分是用户可以选择搜索两个字段、任何一个字段或不搜索字段。如果他想搜索所有内容,则只需将文本框留空即可。

这样做的逻辑可以写成如下:
var p;
if(Name_TextBox=='')
{
p=from row in person
select row ;
}
else
{
p= from row in person
where row.Name=Name_TextBox
select row ;
}
// repeat the same for age

现在过了一会儿,代码变得很长而且很乱......我怎样才能用 将上面的内容压缩成单个查询没有 if-else ?

最佳答案

试试这样的代码

       string personName = txtPersonName.Text;
int personAge = Convert.ToInt32(txtAge.Text);
var opportunites = from p in this.DataContext.Persons
select new
{
p.PersonID,
p.Name,
p.Age,
p.Gender
};

if (personsID != 0)
opportunites = opportunites.Where(p => p.PersonID == personID);

if (personName != string.Empty)
opportunites = opportunites.Where(p => p.Name.StartsWith(personName));

if (personAge != 0)
opportunites = opportunites.Where(p => p.Age == personAge);

这将正常工作。如果没有给出 personName 则不会添加到 where,如果给出则添加。

关于linq - LINQ 中的条件多字段搜索和过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1005961/

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