2009-11-27 46 views
0

我使用EF来处理数据模型时遇到问题。在L2E中什么是等效的GetPropValue <T>方法?

我有这样的代码在我的方法:

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

i'm用同样的方法听到:

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

我不熟悉LINQ到SQL GetPropValue。你确定它存在吗?这就是说,它是很容易联想到这是什么方法做的,并相应地写:

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")); 
+0

杰森,你的建议,做工精细。 Tks。 – 2009-11-27 20:28:58

相关问题