如何将 IEnumerable<AnonymousType> 转换为 List<T>?
How to convert an IEnumerable<AnonymousType> to a List<T>?
我已经使用 Linq 过滤了 List<Application>
以连接该列表中的两个字段和 return 结果,现在需要 return 该列表到调用方法。
Linq 过滤的结果是 IEnumerable<AnonymousType>
类型,所以我不能 return 我的方法 return 类型是 List<Application>
.
我最初尝试的是使用 ToList 方法转换 IEnumerable,但这会引发编译器错误:
IEnumerable does not contain a definition for ToList()
问题:
如何将 IEnumerable 转换或强制转换为列表?
代码:
这是在列表上执行的任务,用于连接两个字段,return它作为一个列表:
var filteredAppList = applicationList.Select(c => new { c.RID, RID_APP_FIELD = c.RID + " " + c.BusinessFriendlyName });
下面是我如何尝试 return IEnumerable 作为列表:
return filteredAppList.ToList<Application>();
问题是,之前查询 returns 一系列 anonymous 对象,我们正在尝试将它们转换为 Application
类型。是什么导致了这个问题,试试这个。
filteredAppList.Select(x=> new Application()
{
// set properties.
})
.ToList();
如果你知道你需要 return 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();
我已经使用 Linq 过滤了 List<Application>
以连接该列表中的两个字段和 return 结果,现在需要 return 该列表到调用方法。
Linq 过滤的结果是 IEnumerable<AnonymousType>
类型,所以我不能 return 我的方法 return 类型是 List<Application>
.
我最初尝试的是使用 ToList 方法转换 IEnumerable,但这会引发编译器错误:
IEnumerable does not contain a definition for ToList()
问题:
如何将 IEnumerable 转换或强制转换为列表?
代码:
这是在列表上执行的任务,用于连接两个字段,return它作为一个列表:
var filteredAppList = applicationList.Select(c => new { c.RID, RID_APP_FIELD = c.RID + " " + c.BusinessFriendlyName });
下面是我如何尝试 return IEnumerable 作为列表:
return filteredAppList.ToList<Application>();
问题是,之前查询 returns 一系列 anonymous 对象,我们正在尝试将它们转换为 Application
类型。是什么导致了这个问题,试试这个。
filteredAppList.Select(x=> new Application()
{
// set properties.
})
.ToList();
如果你知道你需要 return 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();