我使用以下代码返回IList:
public IList<string> FindCodesByCountry(string country)
{
var query = from q in session.Linq<Store>()
where q.Country == country
orderby q.Code
select new {q.Code};
return (IList<string>) query.ToList();
}
但是我一直收到这个错误:
无法将类型为'System.Collections.Generic.List 1[<>f__AnonymousType0
1 [System.String]]'的对象强制转换为'System.Collections.Generic.IList`1 [System.String]'。< / p>
我应该回到这里?
答案 0 :(得分:4)
只要q.code是一个字符串,这应该工作: 请注意,它没有创建匿名对象,只是选择了字符串。
public IList<string> FindCodesByCountry(string country)
{
var query = from q in session.Linq<Store>()
where q.Country == country
orderby q.Code
select q.Code;
return query.ToList();
}
答案 1 :(得分:2)
您选择匿名类型是否有原因?如果不试试这个......
var query = from q in session.Linq<Store>()
where q.Country == country
orderby q.Code
select q.Code;
答案 2 :(得分:1)
怎么样
query.Select(s => s.ToString()).ToList();
或者
query.Cast<String>().ToList();
但我假设q.Code
是一个字符串?在这种情况下,您只想更改LINQ表达式:
var query = from q in session.Linq<Store>()
where q.Country == country
orderby q.Code
select q.Code;
答案 3 :(得分:1)
在查询中,不要选择包含字符串的匿名类,只需选择字符串本身:
var query = from q in session.Linq<Store>()
where q.Country == country
orderby q.Code
select q.Code;
答案 4 :(得分:1)
您无法将自定义类型列表强制转换为字符串列表。最简单的方法是让你的query
对象以iEnumerable字符串列表开头,而不是自定义类型。将您的选择行更改为:
select new q.Code.toString();
你会很好。如果q.Code本身就是一个开头的字符串,那么.ToString()
就没有必要了。
答案 5 :(得分:0)
试试这个:
return query.ToList<string>();