LINQ查询与包含和空值
我对搜索的方法,该方法是这样的:LINQ查询与包含和空值
public IEnumerable<Result> Search(string searchText)
{
return _context.Person.Where(x => x.Contains(searchText));
}
我希望能够调用此函数searchText
被空/空,并得到所有的记录回。
我已经没有运气尝试这样做:
return _context.Person.Where(x => x.Contains(searchText ?? ""));
有另一种方式来做到这一点,除了它应用到查询之前,将其分成两个步骤,并检查searchString
在if语句?
public IEnumerable<Result> Search(string searchText)
{
if(string.IsNullOrEmpty(searchText))
return _context.Person;
else
return _context.Person.Where(x => x.Contains(searchText));
}
return _context.Person.Where(x =>string.IsNullOrEmpty(searchText) ? true : x.Contains(searchText));
或
public IEnumerable<Result> Search(string searchText)
{
return string.IsNullOrEmpty(searchText) ? _context.Person : _context.Person.Where(x => x.Contains(searchText));
}
_context.Person.Where(x => string.IsNullOrEmpty(searchText) ? true : x.Contains(searchText));
好的和最短的方式。谢谢。 – Dilip0165 2016-04-11 08:50:50
你可以这样说:
return _context.Person.Where(x =>
string.IsNullOrEmpty(searchText) ||
x.Contains(searchText)
);
这是我用了很多的模式,当我有参数,我想只有在设定后才适用。
和不太有效的方式......如果不知道这是语义正确的,但你的想法...
return _context.Person.Where((x, index) => x.Contains(searchText ?? x[index]));
假设Person
是一类Contains
似乎是这个类的方法。像Where(x => x.Contains(searchText))
或Where(x => string.IsNullOrEmpty(searchText) || x.Contains(searchText))
其中x是一个人不会使用LINQ在所有的工作到实体,即使有一个简单的类象的表达......
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public bool Contains(string searchText)
{
return Name.Contains(searchText);
}
}
...它会抛出一个异常,因为LINQ到实体不能将此方法转换为存储表达式。 Where(x => string.IsNullOrEmpty(searchText) || x.Name.Contains(searchText))
虽然会工作。
相关(但不是你的具体问题在这里):http://stackoverflow.com/questions/682429/how-can-i-query-for-null-values-in-entity-framework – 2011-04-08 14:33:42
是'Contains' a你的'Person'类的方法?哪些搜索FirstName和LastName等?你甚至如何获得原始版本'_context.Person.Where(x => x.Contains(searchText))'与LINQ to Entities一起工作?你能展示这种方法吗? – Slauma 2011-04-08 16:45:36
@Sla http://weblogs.asp.net/zeeshanhirani/archive/2008/04/18/how-to-do-in-and-like-clause-in-linq-to-sql.aspx – stephen776 2011-04-08 17:04:52