Linq ForEach с AddRange и содержит и выберите - PullRequest
2 голосов
/ 11 января 2012

У меня есть цикл 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)));

Но это не сработало, очевидно, Пожалуйста, направь меня в правильном направлении

Ответы [ 3 ]

1 голос
/ 11 января 2012

Вы можете заполнить ListID как

SubDetails.Where(t => typeList.Exists(lst => lst.XXX == t.TypeID)).Select(id => id.OrderID)
1 голос
/ 11 января 2012

попробуйте это.

var ListID = typelist.Join(SubDetails,tl=>tl,sd=>sd.TypeID,(tl,sd)=>sd.OrderID).ToArray();
1 голос
/ 11 января 2012

Попробуйте это:

var ListID = SubDetails
                .Where(info => typeList.Any(type => type == info.TypeID)
                .Select(info => info.OrderID);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...