假设:
一个linq表达式,它返回一个字段为字符串的匿名类型:
var list = new List<MyClass>();
var myStringList = (from myClass in list
select new {myClass.StringField}).ToList();
var processedStrings = processStrings(myStringList);
和我将List<string>
传递给:
List<string> processStrings(List<string> stringsToProcess) {}
问题:
传递myStringList
时出现以下编译错误:
ArgumentType type 'System.Collections.Generic.List<{StringField:string}>' is not assignable to parameter type 'System.Collections.Generic.List<string>'
所以我尝试使用.Cast<string>()
来解决这个问题,它消除了编译器错误,但抛出了一个异常,它无法将匿名字符串转换为字符串。
任何想法都不必手工处理每个字符串?
答案 0 :(得分:8)
尝试不返回带有一个字符串的匿名对象,而是返回字符串本身:
var list = new List<MyClass>();
var myStringList = (from myClass in list
select myClass.StringField).ToList();
var processedStrings = processStrings(myStringList);
答案 1 :(得分:4)
为什么不
select myClass.StringField
答案 2 :(得分:3)
你应该尝试:
var list = new List<MyClass>();
var myStringList = (
from myClass in list
select myClass.StringField).ToList();
var processedStrings = processStrings(myStringList);