如何检查返回的数组是否至少包含两个元素?

时间:2011-10-27 15:13:08

标签: c# linq

这是我的代码: -

Repository.DB.Table01Repository.AsQueryable().Where(item => (item.Name.Split(' ')[1] == null)).ForEach(items => _VerifyList.Add(items.Name.Trim()));

我将'Name'拆分为'',如果它没有第二个元素,我需要那些记录。

谢谢..

2 个答案:

答案 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(" ")))