0

我的说法是

Contents.
    Select(x=> new 
        {
            ContentUsers = x.ContentUsers.
                Where(t=>t.UserId==2).
                Select(t=>t.ContentId)
        }).
    Where(y=>y.ContentUsers.Any())

它给了我一些我想在我的另一个陈述中使用它的 ID。

在此处输入图像描述

Contents.Where(x=>x.Id == 633,634,635)

我怎样才能合并它们?

4

1 回答 1

1

您缺少的是Contains功能。在单个查询表达式中表达这一点可能会更简单。如果我将您的代码转换为单个查询表达式,我看起来像这样:

var content =
    from c in Contents
    let contentUsers = 
        from x in Contents
        select new
        {
            ContentUsers = 
                from t in x.ContentUsers
                where t.UserId == 2
                select t.ContentId
        }
    where contentUsers.Any(cu => cu.ContentUsers.Contains(c.Id))
    select c;

但是,看起来您想要的只是获取与集合中Content给定关联的记录。这要容易得多。UserIDContentUsers

var content =
    from c in Contents
    where c.ContentUsers.Any(t => t.UserId == 2)
    select c;

或者如果你喜欢

var content = Contents.Where(c => c.ContentUsers.Any(t => t.UserId == 2));
于 2013-03-19T18:49:26.683 回答