IequalityComprerer String Значение в объекте
-
24-10-2019 - |
Вопрос
Я, возможно, делаю это неправильно, но;
У меня есть список объектов в LINQ;
MyObj
string name
string somethingElse
List<MyObj> myObjects;
Теперь я пытаюсь увидеть, имеет ли какой -либо объект в этом списке значение строки;
Так что я;
if (Model.myObjects.Contains("thisobject", new MyObjComparer()))
{
}
В сравнительном центре у меня есть;
public class MyObjComparer: IEqualityComparer<MyObj>
{
public bool Equals(string containsString, MyObj obj)
{
return obj.name == containsString;
}
}
Как я могу использовать сравнитель, чтобы проверить строковое значение в поле объекта?
Решение
Более простой метод - сделать это:
if (Model.myObjects.Any(o => o.name == "thisobject"))
{
}
Другие советы
Вы можете использовать метод Findall следующим образом:
foreach(var item in Model.myObjects.FindAll(x=>x.Contains("thisobject")))
{
//Do your stuff with item
}
Сравнитель равенства полезен только, чтобы сказать, равны ли два объекта одного типа. Я не знаю ваш вариант использования, но не могли бы вы просто сделать что-то вроде
if (Model.myObjects.Where(x => x.name == "thisobject").Any())
{
// Do something
}
Не связан с StackOverflow