我正在使用c#和Enterprise Library从Store Procedure中检索数据。
我正在使用Linq将Table映射到像这样的实体。
List<ActivitySearchEntity> result = db.ExecuteDataSet(dbCommand)
.Tables[0]
.AsEnumerable()
.ToList()
.ConvertAll(dr => new ActivitySearchEntity
{
Activity_Id = Convert.ToInt32(dr["Activity_ID"].ToString()),
User_id = Convert.ToInt32(dr["User_ID"].ToString())
});
工作正常......
当我映射到实体它工作正常,我需要的是mapp到List<int>
List<ActivitySearchEntity> result = db.ExecuteDataSet(dbCommand)
.Tables[0]
.AsEnumerable()
.ToList<int>()
或类似的东西..但它不起作用。
如何映射到List<int>
?
答案 0 :(得分:1)
取决于你的命令会有不同的问题:
如果它与第一个代码段相同,那么您的表包含多个字段。因此,它不能“隐式”转换为List<int>
。您需要添加.Select
来仅选择一个字段(+解析为int
,就像在第一个代码段中一样。
db.ExecuteDataSet(dbCommand)
.Tables[0]
.AsEnumerable()
.Select(dr => Convert.ToInt32(dr["Activity_ID"].ToString()).ToList();
假设您的命令只检索一列,并且类型为int
,您的变量属于List<ActivitySearchEntity>
类型,而不是List<int>
。将其改为后者