我使用Linq过滤了List<Application>
以连接该列表中的两个字段并返回结果,现在需要将该列表返回给调用方法。
Linq过滤的结果是IEnumerable<AnonymousType>
类型,所以我无法返回,因为我的方法返回类型是List<Application>
。
我首先尝试的是使用ToList方法转换IEnumerable但是会抛出编译器错误:
IEnumerable does not contain a definition for ToList()
问题:
如何将IEnumerable转换或转换为List?
代码:
这是在List上执行的赋值,用于连接两个字段并将其作为列表返回:
var filteredAppList = applicationList.Select(c => new { c.RID, RID_APP_FIELD = c.RID + " " + c.BusinessFriendlyName });
以下是我尝试将IEnumerable作为List返回的方法:
return filteredAppList.ToList<Application>();
答案 0 :(得分:4)
问题是,上一个查询返回一系列匿名对象,我们正在尝试将这些对象转换为Application
类型。导致问题的原因是,试试这个。
filteredAppList.Select(x=> new Application()
{
// set properties.
})
.ToList();
答案 1 :(得分:1)
如果您知道需要返回Application
个对象,则应该避免使用匿名类型:
var filteredAppList = applicationList.Select(c => new Application { RID = c.RID, RID_APP_FIELD = c.RID + " " + c.BusinessFriendlyName });
return filteredAppList.ToList();
我认为您的匿名类型与您的Application
类型完全相同,但情况可能并非如此。您仍然可以在中间步骤中使用匿名类型,但运行时很难自动将您的匿名类型转换为Application
,因此投射回所需类型的实例几乎是您唯一的选择。
var filteredAppList = applicationList.Select(c => new { RID = c.RID, RID_APP_FIELD = c.RID + " " + c.BusinessFriendlyName });
return filteredAppList.Select(anon => new Application { RID = anon.RID, OtherApplicationProperty = anon.RID_APP_FIELD }).ToList();