У меня есть простой класс:Сравнить свойство объекта/доступа динамически со ссылкой строки
class Event {
public string Source { get; set; }
}
Тогда у меня есть список этого класса:
var list = new List<Event>();
list.Add(new Event { Source="Me" });
list.Add(new Event { Source="You" });
Теперь я хочу, чтобы получить один событие в список с свойством «Источник», установленным на «Я».
НО я не хочу, чтобы получить доступ к этому свойству, как этот список [0] .Source как это:
list.Where(o => o.Source == "Me").Single()
Я знаю, что мой объект имеет свойство «Источник». но мне нужно передать строку, чтобы получить это свойство и сравнить его. Что-то вроде этого:
list.Where(o => o.GetType().GetProperty("Source").GetType() == "Me").Single()
Видимо, это не работает. В основном я должен иметь возможность написать сравнение, например o.Source == "ME"
, без ссылки на свойство напрямую.
Как я могу это сделать?
Вы можете попробовать библиотеку Dynamic LINQ Microsoft, https://msdn.microsoft.com/en-us/vstudio/bb894665.aspx после загрузки идти к LinqSamples/DynamicQuery в zip-файле, вот хорошая запись в блоге об этом. https://weblogs.asp.net/scottgu/dynamic-linq-part-1-using-the-linq-dynamic-query-library – dman2306
why'. GetType() == "Me" '? Должны ли вы получить значение и сравнить? –