C# 如何转换IEnumerable<;匿名类型>;到列表<;T>;?
我已经过滤了一个C# 如何转换IEnumerable<;匿名类型>;到列表<;T>;?,c#,linq,list,ienumerable,anonymous-types,C#,Linq,List,Ienumerable,Anonymous Types,我已经过滤了一个列表,使用Linq连接该列表中的两个字段并返回结果,现在需要将该列表返回给调用方法 Linq筛选的结果类型为IEnumerable,因此我无法返回该类型,因为我的方法返回类型为List 我最初尝试的是使用ToList方法转换IEnumerable,但这会引发编译器错误: IEnumerable does not contain a definition for ToList() 问题: 如何将IEnumerable转换或强制转换为列表 代码: 这是对列表执行的赋值,用于连接两个
列表
,使用Linq连接该列表中的两个字段并返回结果,现在需要将该列表返回给调用方法
Linq筛选的结果类型为IEnumerable
,因此我无法返回该类型,因为我的方法返回类型为List
我最初尝试的是使用ToList方法转换IEnumerable,但这会引发编译器错误:
IEnumerable does not contain a definition for ToList()
问题:
如何将IEnumerable转换或强制转换为列表
代码:
这是对列表执行的赋值,用于连接两个字段并将其作为列表返回:
var filteredAppList = applicationList.Select(c => new { c.RID, RID_APP_FIELD = c.RID + " " + c.BusinessFriendlyName });
下面是我如何尝试将IEnumerable作为列表返回:
return filteredAppList.ToList<Application>();
返回filteredaplist.ToList();
问题是,前面的查询返回一系列匿名对象,我们正在尝试将它们转换为应用程序
类型。导致问题的原因,请尝试此
filteredAppList.Select(x=> new Application()
{
// set properties.
})
.ToList();
问题是,前面的查询返回一系列匿名对象,我们正在尝试将它们转换为
Application
类型。导致问题的原因,请尝试此
filteredAppList.Select(x=> new Application()
{
// set properties.
})
.ToList();
如果您知道需要返回
应用程序
对象,只需避免匿名类型:
var filteredAppList = applicationList.Select(c => new Application { RID = c.RID, RID_APP_FIELD = c.RID + " " + c.BusinessFriendlyName });
return filteredAppList.ToList();
我假设您的匿名类型与应用程序的类型完全相同,但情况可能并非如此。您仍然可以在中间步骤中使用匿名类型,但运行时很难将您的匿名类型自动转换为应用程序
,因此投影回所需类型的实例几乎是您唯一的选择
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();
如果您知道需要返回应用程序
对象,只需避免匿名类型:
var filteredAppList = applicationList.Select(c => new Application { RID = c.RID, RID_APP_FIELD = c.RID + " " + c.BusinessFriendlyName });
return filteredAppList.ToList();
我假设您的匿名类型与应用程序的类型完全相同,但情况可能并非如此。您仍然可以在中间步骤中使用匿名类型,但运行时很难将您的匿名类型自动转换为应用程序
,因此投影回所需类型的实例几乎是您唯一的选择
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();
为什么要尝试转换回应用程序类?没有对象是Application
对象。它们是匿名类型的实例。做你想做的事情基本上包括做。选择(x=>newapplication{RID=x.RID,…})
等等-手动或自动;如果您想要应用程序
实例,为什么要切换到匿名类型?RID\u APP\u字段
是应用程序
中的属性吗?如果不是,则必须将其设为一个或以这种方式重写到字符串
:返回RID+“”+BusinessFriendlyName
。然后,您不需要创建新实例,但可以返回applicationList。其中(条件)。ToList()
RID\u APP\u字段
是通过连接RID和BusinessFriendlyName创建的匿名类型@TimSchmelter@BrianJ:不,在具体类中不能有匿名属性。添加一个属性,如:public string RID\u APP_FIELD{get{return RID+“”+BusinessFriendlyName;}}
,或以这种方式重写ToString
。为什么要尝试转换回应用程序类?您的对象都不是Application
对象。它们是匿名类型的实例。做你想做的事情基本上包括做。选择(x=>newapplication{RID=x.RID,…})
等等-手动或自动;如果您想要应用程序
实例,为什么要切换到匿名类型?RID\u APP\u字段
是应用程序
中的属性吗?如果不是,则必须将其设为一个或以这种方式重写到字符串
:返回RID+“”+BusinessFriendlyName
。然后,您不需要创建新实例,但可以返回applicationList。其中(条件)。ToList()
RID\u APP\u字段
是通过连接RID和BusinessFriendlyName创建的匿名类型@TimSchmelter@BrianJ:不,在具体类中不能有匿名属性。可以添加如下属性:public string RID_APP_FIELD{get{return RID+“”+BusinessFriendlyName;}}
或以这种方式重写ToString
。我需要返回格式为“RID+BusinessFriendlyName”的列表,以便生成的筛选列表类似于:“879898 TestAppOne”等。。您能否详细介绍如何设置上述属性?如何定义Application
class?您需要在此处设置应用程序属性。我需要返回格式为“RID+BusinessFriendlyName”的列表,以便生成的筛选列表类似于:“879898 TestAppOne”等。。您能否详细介绍如何设置上述属性?如何定义Application
class?您需要在此处设置应用程序属性。