Что эквивалентно методу GetPropValue <T>в L2E? - PullRequest
0 голосов
/ 27 ноября 2009

У меня проблема с использованием EF для моей модели данных.

У меня есть этот код в моем методе:

  listaPaginada = sortOrder.Equals("asc") ?
                    _cadastroServ.SelecionaNotasFiscais(idParceiro).OrderBy(i =>   i.GetType().GetProperty(query)) :
                    _cadastroServ.SelecionaNotasFiscais(idParceiro).OrderByDescending(i => i.GetType().GetProperty(query));

Я использую тот же метод прослушивания:

Func<NotaFiscal, bool> whereClause = (i => i.GetPropValue<string>(sortName).Contains(query));
            listaPaginada = sortOrder.Equals("asc", StringComparison.CurrentCultureIgnoreCase) ?
                _cadastroServ.SelecionaNotasFiscais(idParceiro).Where(whereClause).OrderByDescending(i => i.GetPropValue<IComparable>(sortName)) :
                _cadastroServ.SelecionaNotasFiscais(idParceiro).Where(whereClause).OrderBy(i => i.GetPropValue<IComparable>(sortName));

В L2SQL метод GetPropValue существует, но в L2E нет.

Кто-то знает подобный метод в L2E? или знает как это решить?

С уважением []

1 Ответ

1 голос
/ 27 ноября 2009

Я не знаком с GetPropValue в LINQ-to-SQL. Вы уверены, что он существует? Тем не менее, достаточно легко придумать, что делает этот метод, и написать соответственно:

static class ObjectExtensions {
    public static T GetPropValue<T>(this object value, string propertyName) {
        if (value == null) { throw new ArgumentNullException("value"); }
        if (String.IsNullOrEmpty(propertyName)) { throw new ArgumentException("propertyName"); }
        PropertyInfo info = value.GetType().GetProperty(propertyName);
        return (T)info.GetValue(value, null);
    }
}

Использование:

public class Test {
    public string Name { get; set; }
    public int Number { get; set; }
}

Test test = new Test() { Name = "Jenny", Number = "8675309" };
Console.WriteLine(test.GetPropValue<string>("Name"));
Console.WriteLine(test.GetPropValue<int>("Number"));
...