繁体   English   中英

如何在带有2条语句的linq lambda中使用sql IN语句

[英]How to use sql IN statement in linq lambda with 2 statements

我的声明是

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)

我如何合并它们?

您缺少的是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;

但是,您似乎想要的只是获取与ContentUsers集合中与给定UserID关联的Content记录。 这要容易得多。

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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM