【问题标题】:Return entities after intersecting with list of web controls using LINQ使用 LINQ 与 Web 控件列表相交后返回实体
【发布时间】:2014-03-20 11:47:21
【问题描述】:

我可以使用以下方法返回相交后匹配的 ID(字符串):

var ids = db.QuestionOption
            .Select(a => a.ControlID)
            .Intersect(cs.Select(b => b.ClientID))
            .ToList();

如何与 ID 相交但获取实体,而不仅仅是匹配的 ID?

【问题讨论】:

    标签: c# asp.net .net linq


    【解决方案1】:

    首先你可以得到Ids:

    var idList = cs.Select(b => b.ClientID);
    

    然后你可以像这样使用Contains

    var result = db.QuestionOption.Where(a => idList.Contains(a.ControlID)).ToList();
    

    或者,您可以使用join

    from q in db.QuestionOption
    join x in cs on q.ControlId equals x.ControlId
    select q
    

    【讨论】:

    • 您的第一个解决方案非常适合。
    【解决方案2】:

    你可以用 where 子句代替 intersect:

    var objs = db.QuestionOption.Where(a => cs.Select(b => b.ClientId).ToList().Contains(a.ControlID)).ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-26
      • 2014-07-16
      • 2021-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多