2014-03-04 115 views
0

我有以下屬性類:函數功能返回任何類型

class tbl_tax_type 
{ 
    public int TAXT_ID { get; set; } 
    public string BFNS_CODE { get; set; } 
    public string TAXT_CODE { get; set; } 
    public string TAXT_DESC { get; set; } 
    public string ACCT_CODE { get; set; } 
    public DateTime CREATED_DATE { get; set; } 
    public string CREATED_BY { get; set; } 
    public Nullable<DateTime> LAST_MODIFIED_DATE { get; set; } 
    public string LAST_MODIFIED_BY { get; set; } 
    public string TAXT_STATUS { get; set; } 
} 

我使用下面的方法來檢索數據:

private static List<T> SelectData<T>(Expression<Func<T, bool>> PredicateExp) where T : new() 
{ 
    return FireCon().Table<T>().Where(PredicateExp).ToList(); 
} 

通過使用情況(代碼下面從tbl_tax_type其中BFNS_CODE選擇行等於0605)

List<tbl_tax_type> TempList = SelectData<Tbl.tbl_tax_type>(taxtype => taxtype.BFNS_CODE == "0605") 

現在我想對選定的數據應用區分,所以我來到這個我的ThOD。

public static List<T> DistinctBy<T>(List<T> MyList, Func<T, __> SelectorExpr) 
{ 
    return GenericList.Select(SelectorExpr).Distinct().ToList(); 
} 

通過使用情況(代碼下面選擇不同TAXT_CODE)

DistinctBy(TempList, v => v.TAXT_CODE); 

缺少某些內容,選擇表達的TResult。我希望它返回任何類型的數據,因爲tbl_tax_type的屬性具有不同的數據類型。這可能嗎?

回答

1

試試這個:

public static List<T> DistinctBy<T, S>(List<T> myList, Func<T, S> selectorExpr) 
{ 
    return myList.ToLookup(selectorExpr).SelectMany(t => t.Take(1)).ToList(); 
} 
1

你的意思是這樣......

public static List<S> DistinctBy<T, S>(List<T> myList, Func<T, S> selectorExpr) 
{ 
    return myList.Select(selectorExpr).Distinct().ToList(); 
} 

+0

他希望S上不同,但T. –

+0

嗯枚舉。所以讓所有的列表,它僅出現一次根據selectorExpr的T的? – Mick

+0

或者Enigmativity已經回答了哪一個問題,它是針對selectorExpr確定的每個不同的值隨意取一個myList的單個項目。似乎想要奇怪的功能。 – Mick