У меня есть два списка разных типов, которые имеют общий ориентир, который мне нужно сравнить.
если значение существует в обоих списках, мне нужно заполнить свойство isPresent в третьем списке.
class a {
Guid stub;
string name;
int number;
}
class b {
Guid SecondStub;
.
.
}
class temp
{
bool isPresent;
string somethingElse;
}
------------------------------------------
теперь у меня есть один Список каждого типа a и b, и мне нужно заполнить свойство isPresent в третьем списке.
foreach (var a in ListofA)
{
temp.Add(new Temp(){
isPresent = ListOfB.Where(l => l.SecondStub == a.Stub).Equals(null)
})};
не работает.. пожалуйста помогите.
В синтаксисе linq он должен выглядеть так:
var temps = from a in ListofA
join b in ListofB on a.SecondStub == b.Stub
select new temp { isPresent = True,
OtherProperty = "something",
ThirdProperty = "something else"};
Хотя вы не оставили места в temp, чтобы сказать, какой из них был прав, только флаг isPresent
.
Возможно, вы хотите включить значение в свойство в temp?
Причина, по которой не работает, заключается в том, что Where всегда возвращает объект, поскольку он возвращает перечислимый и, возможно, без элементов в нем, но он по-прежнему не является нулевым.
Используйте Any вместо Where.
var c = a
.Select(x => new Temp {
IsPresent = b.Any(z => z.SecondStub == x.Stub)
})
.ToList();
(с моего телефона, поэтому форматирование может быть отключено)