Возможно, этот вопрос уже задан раньше, но мои google-fu и SO-Search не дали мне то, что я искал.LINQ- сравнение и обновление значений
У меня есть пользовательский класс и пользовательский сопоставитель классов (для проверки равенства класса), реализованный с помощью IEqualityComparer.
public class Person
{
public string Name { get; set; }
public bool Flag { get; set; }
}
public class PersonComparer : IEqualityComparer<Person>
{
#region IEqualityComparer<Person> Members
public bool Equals(Person x, Person y)
{
//case insensitive compare
return string.Equals(x.Name, y.Name, StringComparison.OrdinalIgnoreCase);
}
public int GetHashCode(Person obj)
{
return base.GetHashCode();
}
#endregion
}
и в основной части кода у меня есть 2 списка «источник» и «целевых»
Person bob = new Person() { Name = "Bob" };
Person sam = new Person() { Name = "Sam" };
Person andy = new Person() { Name = "Andy" };
Person thomas = new Person() { Name = "Thomas" };
Person jimmy = new Person() { Name = "Jimmy" };
Person sam2 = new Person() { Name = "sam" }; // note the lower case
Person jane = new Person() { Name = "Jane" };
List<Person> source = new List<Person>() { bob, sam, andy, thomas };
List<Person> target = new List<Person>() { sam2, andy,jane };
, что я хочу сделать список источников
обновление только содержат sam и andy, так как bob и thomas не попадают в целевой список. Я сделал это
источник = (от р в источник, где (с т в целевой выберите T) .Contains (р, новый PersonComparer()) выберите р) .ToList();
В цель я должен «флаг» sam2, а andy - true, а по умолчанию jane помечен как «false», я не должен его менять.
Я попытался с помощью, но это снимает «Jane» от цели
//sets sam2 & andy to true, removes Jane
target = (from p in target.Select(t => { t.Flag = true; return t; })
where (from s in source
select s).Intersect(select p).ToList();
Может ли LINQ гуру сказать мне, что я делаю неправильно?
3. Есть ли лучший способ написать запрос 1?
4.And наконец тривиальный вопрос: как именно вы говорите «=>», когда вы разговариваете с коллегой кодера по телефону
>> Запросы с побочными эффектами, как правило, плохая идея. Получил это! Благодарю. – ram