在LINQ to SQL查询中检查List是否为空?

时间:2017-07-16 19:46:20

标签: c# linq

我有一个List lstStudents = GetStudents()//这个方法可以返回null。 现在我正在尝试在我的数据库表学生

上运行此查询
var result = (from c in student
             where lstStudents.Contains(c.name)
             select c);

如何检查查询中的lstStudents是否为空。

注意:我知道我可以在运行此查询之前检查它,但由于某些其他原因我无法执行此操作。如果我在查询中尝试(lstStudents!= null),则会出错。

  

无法比较类型的元素   ' System.Collections.Generic.List`1 [[System.String,mscorlib,   Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]'。   只有原始类型,枚举类型和实体类型   支撑。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

public List<string> GetStudents()
{
    return null;
}

private void button1_Click(object sender, EventArgs e)
{
    using(var ed = new DataClasses1DataContext())
    {
        List<string> lstStudents = GetStudents();

        var tst = 
            (from c in ed.Baleni
            where (lstStudents ?? new List<string>()).Contains(c.b_poznamka)
            select c)
        .ToList();
    }
}

.net 4.0.0.0,没有问题(我只在我的数据库中使用了不同的表)。

答案 1 :(得分:-1)

这应该有效

var result =  db.users.Where(x=> list != null && list.Any(a=> 
a.Contain(x.Email)));