Справка по Linq-запросу - PullRequest
       14

Справка по Linq-запросу

2 голосов
/ 15 января 2010

У меня есть две коллекции, и мне нужно создать новую коллекцию из двух коллекций.

Предположим, следующий класс:

public class Widget
{
   property int Id{get;set;}
   property string Label{get;set;}
}

У нас есть два класса IList.Я хотел бы создать анонимный тип с Id, Label и Exists

Таким образом, делая это для Id и Label, у меня есть:

var newCol=from w in widgets
           select new {Id=w.Id,Label=w.Label,Exists=????}

Есть ли способ в Linq, который я могу определитьсуществует сам, без написания зацикленного кода здесь?

Редактировать

Exists сообщает нам, есть ли виджет во втором списке.Так, например, одно решение, о котором я только что подумал, было:

var newCol=from w in widgets
           select new {Id=w.Id,Label=w.Label,Exists=myWidgets.Contains(w)}

Где мои виджеты - второй IList.

Ответы [ 2 ]

3 голосов
/ 15 января 2010

Ваш вопрос действительно расплывчатый, но я думаю, это то, что вы хотите:

var newCol = from w in widgets
             select new { Id = w.Id, Label = w.Label, 
                 Exists = others.Contains(o => o.Id == w.Id }
1 голос
/ 15 января 2010

Вы также можете сделать это, используя GroupJoin :

var newCol = widgets.GroupJoin(
    otherWidgets,
    w => w.Id,
    w => w.Id,
    (w, joined) => new { Id = w.Id, Label = w.Label, Exists = joined.Any() });
...