【问题标题】:Linq ForEach with AddRange and Contains And SelectLinq ForEach 与 AddRange 并包含和选择
【发布时间】:2012-02-07 13:12:37
【问题描述】:

我有一个 foreach 循环,我试图将它变成一个 linq 查询

List<CustomType> typeList=new List<CustomType>();
List<int> ListID=new List<int>();

foreach (Info info in SubDetails)
{
    if (typeList.Contains(info.TypeID))
    {
        ListID.Add(info.OrderID);
    }
}

现在我正试图把它变成一个 linq 循环

 SubDetails.ForEach(u => List.AddRange(
                    typeList.Contains(ID or something)
                    .Select(u.OrderID)));

但这显然不起作用,请引导我朝着正确的方向前进

【问题讨论】:

    标签: c# linq lambda foreach


    【解决方案1】:

    试试这个:

    var ListID = SubDetails
                    .Where(info => typeList.Any(type => type == info.TypeID)
                    .Select(info => info.OrderID);
    

    【讨论】:

      【解决方案2】:

      ListID可以填写为

      SubDetails.Where(t => typeList.Exists(lst => lst.XXX == t.TypeID)).Select(id => id.OrderID)
      

      【讨论】:

      • 嗨,感谢您的回复,但我从 typeList.Contains(t.TypeID)) 收到错误,因为 typeList.Contains 期望其中有一些自定义类型,我可以让它在我的合并中工作回答 Ed, typeList.Any(u=>u.TypeID==t.TypeID),请启发你的方法
      • 糟糕,我错过了 customtype 部分
      【解决方案3】:

      试试这个。

      var ListID = typelist.Join(SubDetails,tl=>tl,sd=>sd.TypeID,(tl,sd)=>sd.OrderID).ToArray();
      

      【讨论】:

        猜你喜欢
        • 2019-01-27
        • 1970-01-01
        • 2011-05-09
        • 1970-01-01
        • 2014-02-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-04
        • 2011-02-21
        相关资源
        最近更新 更多