用户从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; }
}
答案 0 :(得分:2)
您不需要为一个条目设置特殊情况,也不需要用逗号分隔多个条目,并且您不需要处理用户不输入任何内容的情况。用这两行替换两个嵌套的if语句:
string[] authors = _author.Replace(" ","").Split(',');
allQueryable = allQueryable.Where(u => u.Authors.Intersect(authors).Count() > 0).ToList();