首先讓我說我不確定這個問題的標題是否有意義,但我不確定如何說出我的問題。在Func/lambda表達式中重複使用方法調用
我有一個類定義爲
public static class NaturalSort<T>
這個類有一個方法
public static IEnumerable<T> Sort(IEnumerable<T> list, Func<T, String> field)
基本上它執行假定返回值進行排序函數求一些列表上的自然排序。我一直在使用它來做任何我想做的事情。
通常我會做這樣的事情
sorted = NaturalSort<Thing>.sort(itemList, item => item.StringValueToSortOn)
現在我有我想要的排序依據的值不是項目的場的情況下,卻是一些方法
通話像
sorted = NaturalSort<Thing>.sort(itemList, item => getValue(item))
現在如果我getValue返回一個對象,而不是一個字符串。我需要做一些有條件的邏輯去我的字符串值
sorted = NaturalSort<Thing>.sort(itemList, item => getValue(item).Something == null ? getValue(item).SomethingElse : getValue(item).SomeotherThing)
這工作,除調用的getValue是昂貴的,我不想把它的3倍。有什麼方法可以在表達式中調用它嗎?
,由於的getValue(項目)不返回一個字符串 – Erix 2011-04-08 14:25:31
他希望通過'item'成員排序是無效的走,因此需要該成員在排序通話。 – Femaref 2011-04-08 14:51:18
doh。它出於某種原因在我的頭上,這是對拉姆達的改造。別介意我瘋狂的談話... – jasper 2011-04-08 15:40:31