where子句bool失败

时间:2013-10-14 06:53:35

标签: c# linq

class Foo{
        public string FooText { get; set; }
        public DateTime DateCreated { get; set; }
        public DateTime DateModified { get; set; }
        public ICollection<Bar> Bars{ get; set; }
}

class Bar{
        public Foo Foo { get; set; }
        public Language Language { get; set; }
        public string FooText { get; set; } 
        public DateTime DateCreated { get; set; }
        public DateTime DateModified { get; set; }
}

我有一个Foo的集合。我希望用语言“Foo and Bar”获得语言名称“English”

fooCollection.Where(x => 
                    x.Translations.Where(q =>
                                         q.Language.LanguageName == "English"));

然后失败了。 Can not convert Foo to bool.

我怎样才能完成这项工作。基本上我想得到语言为英语的Foo和Bar。

2 个答案:

答案 0 :(得分:7)

.Where会返回一个集合,而不是bool将其更改为.Any()

fooCollection.Where(x => 
                    x.Translations.Any(q => 
                                       q.Language.LanguageName == "English"));

答案 1 :(得分:4)

 x.Translations.Where

返回一个集合,而不是布尔值。

fooCollection.Where(x =>
                    x.Translations.Where(q =>
                                         q.Language.LanguageName == "English")
                    .Count() > 0);

应该这样做。

编辑: 由于user2864740评论而添加了括号。 (但我同意.Any()是首选方式。)