使用LINQ综合查询从c#数据表中获取不同的行

本文关键字:获取 数据表 综合 LINQ 查询 使用 | 更新日期: 2023-09-27 18:09:47

我有c#的数据表。只是想在这个数据表的列属性上获得不同的行列表。比如说,我有一个数据表,列属性为x,y &我在数据表中有200行,它们具有相同的x值。我想有独特的行仅基于x列属性与LINQ综合查询,我将其绑定到模型列表(我有)。

我有一个模型

  public class Model
    {
      public Model(string x)
      {
          X= x;
      }
      public int X{ get; set; }
      public string Y{ get; set; }
      public decimal Z{ get; set; }
    }

我被这个综合查询卡住了。它应该给出不同的列表,但不像预期的那样工作。

List<Model> modelList= new List<Model>();
        modelList= (from item in response.AsEnumerable()
                         select new
                         {
                             description = DataTableOperationHelper.GetStringValue(item, "description")
                         }).Distinct().Select(m => new Model(m.description)).ToList();
  • 其中DataTable response(有200行)和description是它的列属性之一。

给出'description'属性的一个列表,但不是DISTICT值。有什么是我需要考虑的吗?

使用LINQ综合查询从c#数据表中获取不同的行

这是因为这段代码

new
{
    description = DataTableOperationHelper.GetStringValue(item, "description")
}

创建具有属性"description"的新对象,它通过引用而不是通过"description"的值进行比较。

试试这个:

ModelList = response.AsEnumerable()
 .Select(item=>DataTableOperationHelper.GetStringValue(item, "description"))
 .Distinct()
 .Select(x => new ConsumablesViewModel(x.description))
 .ToList();