【问题标题】:Why does Linq ToList<string> return System.Data.DataRow?为什么 Linq ToList<string> 返回 System.Data.DataRow?
【发布时间】:2014-01-29 18:24:35
【问题描述】:

当使用下面的代码时,它可以很好地返回一个填充了 DataRows 的 var,我可以循环:

var GetSetRows = Order.AsEnumerable()
                      .GroupBy(r => r.Field<string>("Job_No"))
                      .Where(g => g.Count() > 1)
                      .Select(g => g.First());

但我想做的是返回一个List&lt;string&gt;

我试过了:

List<string> c_strLSetTitle = Order.AsEnumerable()
                                   .GroupBy(r => r.Field<string>("Job_No"))
                                   .Where(g => g.Count() > 1)
                                   .Select(g => g.First().ToString()).ToList();

但这会返回一个包含System.Data.DataRow 元素的列表,但它确实返回了正确的数量,即我期望返回的项目数量。

【问题讨论】:

    标签: c# linq list ienumerable


    【解决方案1】:

    g.First() 返回DataRow 类型的对象。然后你调用ToString(),它返回类型名称System.Data.DataRow。最后,您有一个类型名称列表。

    如果要选择特定列,则将一组行投影到(第一)行的某个字段的值中:

    g.First().Field<string>("FieldName")
    

    或者如果你想返回Job_No字段的值,你可以使用分组键:

    List<string> c_strLSetTitle = Order.AsEnumerable()
                                       .GroupBy(r => r.Field<string>("Job_No"))
                                       .Where(g => g.Count() > 1)
                                       .Select(g => g.Key).ToList();
    

    这将返回重复的 Job_No 字段的值。

    【讨论】:

      【解决方案2】:

      因为gDataRow对象的集合,所以

      .Select(g => g.First().ToString())
      

      返回字符串System.Data.DataRow的集合

      如果你想从每个数据行中提取一个字段,那么使用:

      .Select(g => g.First().Field<{type}>("{fieldname}").ToString())
      

      【讨论】:

        【解决方案3】:

        试试这个

        List<string> c_strLSetTitle = Order.AsEnumerable()
                                             .GroupBy(r => r.Field<string>("Job_No"))
                                             .Where(g => g.Count() > 1)
                                            .Select(g => g.Key).ToList();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-07
          • 2019-10-12
          • 2023-04-10
          • 1970-01-01
          • 1970-01-01
          • 2014-07-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多