У меня есть две коллекции, и вам нужно создать новую коллекцию из двух коллекций.
Предположим, что следующий класс:
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, который я могу определить, не создавая здесь код цикла?
Edit
Exists сообщает нам, является ли виджет во втором списке. Так, например, одно решение, о котором я только что подумал, было:
var newCol=from w in widgets
select new {Id=w.Id,Label=w.Label,Exists=myWidgets.Contains(w)}
Где мои виджеты являются вторым IList.
Вы также можете сделать это, используя GroupJoin:
var newCol = widgets.GroupJoin(
otherWidgets,
w => w.Id,
w => w.Id,
(w, joined) => new { Id = w.Id, Label = w.Label, Exists = joined.Any() });
Ваш вопрос действительно расплывчатый, но я предполагаю, что это то, что вы хотите:
var newCol = from w in widgets
select new { Id = w.Id, Label = w.Label,
Exists = others.Contains(o => o.Id == w.Id }