linq中where语句中的多个条件
multiple conditions in where statement in linq
来自 ui 的用户发布的变量:“_author”。
它可以是一个名字或逗号分隔的更多名字..第一个没问题,但我需要处理第二种情况
_author = "Erick";// 没关系
这里可以单名,
if (!string.IsNullOrEmpty(_author))
{
allQueryable = allQueryable.Where(u => u.Authors.Contains(_author));
}
_author = "Erick,Jennifer,Patrick,..";//嗯
我为这个案例所做的尝试:
if (!string.IsNullOrEmpty(_author))
{
if (_author.Contains(','))
{
allQueryable = allQueryable.Where(u =>u.Authors.Intersect(_author.Split(',').ToArray()));
}
else
allQueryable = allQueryable.Where(u => u.Authors.Contains(_author));
}
实体定义:
public class Book : EntityBase
{
public string Title { get; set; }
public string Publisher { get; set; }
public string Description { get; set; }
public string[] Authors { get; set; }
}
对于一个条目和用逗号分隔的多个条目,您不需要特殊情况,也不需要处理用户什么都不输入的情况。用这两行替换两个嵌套的 if 语句:
string[] authors = _author.Replace(" ","").Split(',');
allQueryable = allQueryable.Where(u => u.Authors.Intersect(authors).Count() > 0).ToList();
来自 ui 的用户发布的变量:“_author”。
它可以是一个名字或逗号分隔的更多名字..第一个没问题,但我需要处理第二种情况
_author = "Erick";// 没关系
这里可以单名,
if (!string.IsNullOrEmpty(_author))
{
allQueryable = allQueryable.Where(u => u.Authors.Contains(_author));
}
_author = "Erick,Jennifer,Patrick,..";//嗯
我为这个案例所做的尝试:
if (!string.IsNullOrEmpty(_author))
{
if (_author.Contains(','))
{
allQueryable = allQueryable.Where(u =>u.Authors.Intersect(_author.Split(',').ToArray()));
}
else
allQueryable = allQueryable.Where(u => u.Authors.Contains(_author));
}
实体定义:
public class Book : EntityBase
{
public string Title { get; set; }
public string Publisher { get; set; }
public string Description { get; set; }
public string[] Authors { get; set; }
}
对于一个条目和用逗号分隔的多个条目,您不需要特殊情况,也不需要处理用户什么都不输入的情况。用这两行替换两个嵌套的 if 语句:
string[] authors = _author.Replace(" ","").Split(',');
allQueryable = allQueryable.Where(u => u.Authors.Intersect(authors).Count() > 0).ToList();