C#Linq Union返回Null

时间:2010-10-14 06:04:53

标签: c# linq

我有一个简单的linq查询,它将两个实现相同接口的表联合起来。

对于这个例子,让我们说IAnimal。

var q = (from d in db.Dogs
         where d.AnimalID = PetID
         select d.Name)
        .Union
        (from c in db.Cats
         where c.AnimalID = PetID
         select c.Name)

因此,如果狗部分没有成员,则q被分配{“”,{无论猫在哪里}}。有没有办法在查询后不执行.Where(x=>x!="" | x!= String.Empty)删除该空记录?

我知道这不是什么大不了的事,但似乎应该有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

这怎么不是一个好方法?这有什么问题?

嗯..有一件事是错的。如果应该:

.Where(x => !string.IsNullOrEmpty(x))

如果您使用的是Entity Framework或其他无法处理IsNullOrEMpty的LINQ提供程序,则代码应为:

.Where(x => x != null && x != "")

您的代码使用|代替&&并检查空字符串两次,但从不为空。