我似乎无法找到一种方法让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