【问题标题】:How do I specify "not in" in this lambda expression?如何在此 lambda 表达式中指定“不在”?
【发布时间】:2012-01-13 13:16:58
【问题描述】:

我有一个简短的问题,因为我的大脑无法与我一起工作......
我在哪里指定我想要不在“组”中的“用户”中的 user_id?

db.Users.Join(db.Groups, a => a.user_id, b => b.user_id, (a, b) => new SelectListItem
{
  Value = a.user_id.ToString(),
  Text = a.surname + " " + a.lastname
});

【问题讨论】:

  • 数据库结构是什么样的? (或者用户中是否有生成的 Groups 属性?)
  • 每个组必须有一个用户,但我想要组表中没有的用户。

标签: c# .net linq-to-sql lambda


【解决方案1】:

以下应该有效(假设我正确理解了您的问题):

db.Users
.Where(x => !db.Groups.Any(y => y.user_id == x.user_id))
.Select(a => new SelectListItem
    {
        Value = a.user_id.ToString(),
        Text = a.surname + " " + a.lastname
    });

【讨论】:

  • 真的很有帮助!谢谢。
【解决方案2】:

你可以试试这样的:

var query =  from u in db.Users
             where !(from g in dc.Groups
                     select g.user_id)
                     .Contains(u.user_id)
             select new SelectListItem { 
                         Value = u.user_id.ToString(),
                     Text = u.surname + " " + u.lastname
         };

看这里:http://introducinglinq.com/blogs/marcorusso/archive/2008/01/14/the-not-in-clause-in-linq-to-sql.aspx

【讨论】:

  • 谢谢,我确信这会起作用,但我需要它在 lambda =)
猜你喜欢
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-03
  • 1970-01-01
  • 1970-01-01
  • 2018-09-30
  • 2020-04-28
相关资源
最近更新 更多