这是我的代码: -
Repository.DB.Table01Repository.AsQueryable().Where(item => (item.Name.Split(' ')[1] == null)).ForEach(items => _VerifyList.Add(items.Name.Trim()))
;
我将'Name'拆分为'',如果它没有第二个元素,我需要那些记录。
谢谢..
答案 0 :(得分:3)
如果Split
包含至少一个空格,Name
将产生两个或更多元素,您可以按如下方式编写:
Repository.DB.Table01Repository.AsQueryable()
.Where(item => !item.Name.Contains(" "))
.ForEach(items => _VerifyList.Add(items.Name.Trim()));
无需实际执行Split
。
此外,Contains
可以映射到SQL(它是CLR methods that map to canonical LINQ functions之一),这意味着查询将在您的数据库上成功执行。通过Split
查询数据库时,无法使用其他方法(如IQueryable
本身),并会导致运行时异常被抛出。
答案 1 :(得分:0)
您希望在此方案中警惕白色空间。由于末尾有空白字符,"abcd ".Split().Count()
将返回2。为了避免这种情况,请使用Trim()
方法在拆分之前删除前导和尾随空格,如下所示:
if(item.Name.Trim().Split() > 1)
{
// Do stuff
}
或在Where子句中:
.Where(item => (item.Name.Trim().Contains(" ")))