Вопрос

Я, возможно, делаю это неправильно, но;

У меня есть список объектов в 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
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top