我似乎無法找到一種方法讓LINQ從指定的存取器中返回值。 我知道每個對象的訪問器的名稱,但我不確定是否有可能將請求的訪問器作爲變量傳遞或以其他方式實現所需的重構。LINQ到對象:有沒有一種方法可以傳遞給LINQ從中獲取值的訪問器?
考慮下面的代碼片段:
// "value" is some object with accessors like: format, channels, language
row = new List<String> {
String.Join(innerSeparator, (from item in myObject.Audio
orderby item.Key ascending
select item.Value.format).ToArray()),
String.Join(innerSeparator, (from item in myObject.Audio
orderby item.Key ascending
select item.Value.channels).ToArray()),
String.Join(innerSeparator, (from item in myObject.Audio
orderby item.Key ascending
select item.Value.language).ToArray()),
// ...
}
我想重構這個到使用指定的訪問,或者是通過一個委託的方法,但我看不出怎麼會工作。
string niceRefactor(myObj myObject, string /* or whatever type */ ____ACCESSOR) {
return String.Join(innerSeparator, (from item in myObject.Audio
orderby item.Key ascending
select item.Value.____ACCESSOR).ToArray());
}
我已經寫了相當數量的C#,但對於LINQ的神奇,我還是一個新手。這是正確的方法嗎?你會如何重構這個?
他怎麼會調用這個函數,請提供樣品 – 2012-03-23 17:33:26
感謝 - 正如我所想? :)........ – 2012-03-23 17:37:22