linq中where语句的多个条件
问题描述:
用户从ui发布的变量:“_ author”。
它可以是一个名称或逗号分隔的多个名称..第一个是好,但我需要处理第二种情形 _author =“埃里克”; //那好吧linq中where语句的多个条件
这里是细跟单名,
if (!string.IsNullOrEmpty(_author))
{
allQueryable = allQueryable.Where(u => u.Authors.Contains(_author));
}
_author = “埃里克,珍妮弗·帕特里克。”; //嗯
我尝试了这种情况:
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();
我想你的意思是写'if(!string.IsNullOrEmpty(_author))'。你已经排除了“!”在你的情况开始时。 – Jace
你的问题是什么? – Enigmativity
那么你的问题是什么? – Mostafiz