2009-11-27 47 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

相關問題