gpt4 book ai didi

linq - 将 Foreach 循环转换为 Linq 并出现错误

转载 作者:行者123 更新时间:2023-12-04 08:27:23 25 4
gpt4 key购买 nike

我目前有以下 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);

在这方面的任何帮助都会很棒,我一直在撕扯我的头发!

编辑:根据这里的评论是完整的方法 stub :

        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;
}
}

最佳答案

我的印象是 Resultsobject 的集合,所以 Selectx 定义为 object,但您希望它是 Transmission

尝试以下任一选项:

return Results.Cast<Transmission>().Select(x => new SearchResult(x)).ToList();
return Results.OfType<Transmission>().Select(x => new SearchResult(x)).ToList();

干杯。

关于linq - 将 Foreach 循环转换为 Linq 并出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4043171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com