我的方法有一个字符串参数'type',可以是null,单值或用逗号分隔的多个值,如下所示:
string type=null; //should return all rows
string type="java"; //should return data with java
string type="xamarin,java,c#"; //should return data with all these 3 options
string type="invalid"; //should return null
如果type为空,我需要返回所有行,否则只返回与字符串数组匹配的行。
我在服务器端cs文件中使用了以下LINQ:
public object filter(string type)
{
var models = context. /// get data from db, with id,Date,type,comment as columns
return models.Where(v=> string.IsNullOrEmpty(type) ? true : type.Split(',').Contains(v.type)
.OrderByDescending(a => a.Date).ToList();
}
当我传递null时,它返回所有行 - 似乎正在工作
当我传递用逗号分隔的类型时,它返回所有类型的行 - 似乎工作
当我传递无效类型时,它应返回零行(不工作)
我期待一个干净的单线解决方案。
答案 0 :(得分:0)
你想要这个结果
string type="invalid"; //should return null
但在您的代码中,此条件未得到处理
return type.Split(',').Contains("invalid") ? null : models
.Where(v=> string.IsNullOrEmpty(type) ? true : type.Split(',').Contains(v.type)
.OrderByDescending(a => a.Date)
.ToList();
答案 1 :(得分:0)
感谢朋友们,它适用于任何情况。
return models.Where(v => string.IsNullOrWhiteSpace(type) ? true : type.Split(',').Contains(v.type) ).OrderByDescending(a => a.Date).ToList();