Linq映射表列出<int>

时间:2017-10-26 17:52:36

标签: c# list linq

我正在使用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>

1 个答案:

答案 0 :(得分:1)

取决于你的命令会有不同的问题:

  1. 如果它与第一个代码段相同,那么您的表包含多个字段。因此,它不能“隐式”转换为List<int>。您需要添加.Select来仅选择一个字段(+解析为int,就像在第一个代码段中一样。

    db.ExecuteDataSet(dbCommand)
        .Tables[0]
        .AsEnumerable()
        .Select(dr => Convert.ToInt32(dr["Activity_ID"].ToString()).ToList();
    
  2. 假设您的命令只检索一列,并且类型为int,您的变量属于List<ActivitySearchEntity>类型,而不是List<int>。将其改为后者