【发布时间】:2011-05-01 21:16:20
【问题描述】:
我目前有以下 foreach 循环:
List<SearchResult> searchResults = new List<SearchResult>();
foreach (Transmission trans in Results)
{
searchResults.Add(new SearchResult(trans));
}
return searchResults;
我想将其转换为 Linq 表达式,我尝试了以下方法,在我看来,它在 linq 中实现了相同的功能:
return Results.Select(x => new SearchResult(x)).ToList();
但是执行时出现以下错误:
System.InvalidCastException: Object must implement IConvertible.
我想我理解该错误的要点,但我遇到的问题是我实际上并没有尝试将结果集合中的传输对象转换为 SearchResult 对象,而是返回一个 SearchResult 对象列表,一个 SearchResult 对象像这样初始化:
Transmission transmission = new Transmission(...);
SearchResult result = new SearchResult(trans);
对此的任何帮助都会很棒,我一直在扯头发!
编辑:根据 cmets,这里是完整的方法存根:
public IQueryable<Transmission> Results
{
get;
set;
}
public virtual IEnumerable<SearchResult> ResultsNetwork
{
get
{
List<SearchResult> searchResults = new List<SearchResult>();
foreach (Transmission trans in Results)
{
searchResults.Add(new SearchResult(trans));
}
return searchResults;
}
}
【问题讨论】:
-
你能显示你的方法签名吗?而且您没有使用 linq 到实体或 sql 吗?堆栈跟踪的其余部分是什么?
标签: linq foreach linq-to-objects