在LINQ表达式中出现错误或将服务转换为客户端简单映射
本文关键字:转换 服务 客户端 映射 简单 表达式 LINQ 错误 | 更新日期: 2023-09-27 18:04:22
得到这个错误
"System.Linq.Enumerable+WhereSelectEnumerableIterator`2[Person.Models.IProfession,System.String]"
代码如下:我试图有一个集合的结果。服务返回我的集合,我认为,我需要迭代并存储为一个列表,将有该集合。请帮帮我
public class ProfessionResult
{
public string Name { get; set; }
public string ID{ get; set; }
}
public List<ProfessionResult> ProfessionResults
{
get
{
var professionResults = new List<ProfessionResult>();
professionResults.Add(new ProfessionResult()
{
Name = People?.Where(p => p.IsSelected)
.Select(c => c.ProfessionResults.Select(n => n.Name))
.ToString() ?? null,
ID = People?.Where(p => p.IsSelected)
.Select(c => c.ProfessionResults.Select(i => i.ID))
.ToString() ?? null
});
return professionResults;
}
}
一个基本的谷歌搜索你的部分错误消息显示这篇文章:Linq查询Xdocument返回"System.linq.Enumerable+WhereSelectEnumerableIterator'2[system.XML.Linq.Xelement,System.String]
根据它,
是的,那是因为你在查询上直接调用ToString()第二个和第三个值
基本上,不要在查询时调用ToString()。如果你想要单人间的话值,使用Single(), First()等。如果你想要多个值,迭代在他们之上,你可以轮流对他们做你想做的事,或者加入他们它们以适当的方式组合在一起。
这意味着您必须将值存储为初始格式,而不是在linq查询中对它们使用ToString()
。
*编辑* *
例如,您可以尝试:
Name = People?.Where(p => p.IsSelected).Select(c => c.ProfessionResults.Select(n => n.Name)).Single().ToString() ?? null,
ID = People?.Where(p => p.IsSelected).Select(c => c.ProfessionResults.Select( i => i.ID)).Single().ToString() ?? null
但是只有当您确定时,您将每次返回p => p.IsSelected
的单个唯一记录
我还没有测试过,所以请告诉我它是否有效。