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

时间:2014-06-23 11:06:09

标签: c# linq datatable

我有C#的数据表。想要在此数据表的列属性上获取不同的行列表。我有一个数据表,列属性为x,y& z。我在该数据表中有两行具有相同的x值。我希望DISTINCT行只基于x Column属性和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但不能按预期工作。

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响应(有200行)和&#39;描述&#39;是其列属性之一。

它给出了一个列表但没有DISTICT值&#39;描述&#39; property.Is有什么我想念的东西吗? 坚持认真。

1 个答案:

答案 0 :(得分:-1)

这是因为这段代码

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

创建具有属性的新对象&#34; description&#34;它通过引用而不是&#34;描述&#34;的值进行比较。

试试这个:

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