0
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 的集合。我想使用语言名称为“English”的语言获取 Foo 和 Bar

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

这失败了。Can not convert Foo to bool.

我怎样才能做到这一点。本质上,我想获得语言为英语的 Foo 和 Bar。

4

2 回答 2

7

.Where返回一个集合,它不是布尔值,将其更改为.Any()

fooCollection.Where(x => 
                    x.Translations.Any(q => 
                                       q.Language.LanguageName == "English"));
于 2013-10-14T06:56:57.037 回答
4
 x.Translations.Where

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

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

应该做的伎俩。

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

于 2013-10-14T06:55:56.440 回答