我现在要写一个LINQ语句通过 一个外键ID去另外一个表查询数据,然后 要去掉重复的  var q = from f in db.PurchaseOrders select new { f.SupplierName, f.SupplierID };
                List<Entity.PurchaseOrder> list = new List<Entity.PurchaseOrder>();
                foreach (var item in q)
                {
                    Entity.PurchaseOrder order = new Entity.PurchaseOrder();
                    order.SupplierID = item.SupplierID;
                    order.SupplierName = item.SupplierName;
                    list.Add(order);
                }
                return list;取出来还是有重复的数据,请问如果在里面用distinct 怎么实现,或者别的方法实现也行

解决方案 »

  1.   

    Linq去掉重复行
      

  2.   

    楼上的根本就不行 DbDistinctExpression 需要排序规则参数。
    参数名: argument 报这个错误
      

  3.   

    获取的list你再去一下重复,不可么?
      

  4.   

    var q = (from f in db.PurchaseOrders select new { f.SupplierName, f.SupplierID }.Distinct();这样也可以,比较直观
      

  5.   

    IEnumerable distinctRows = db.t_Personnel.ToList().Distinct(new PersonDataRowComparer());  这句里的PersonDataRowComparer类就是排序规则
      

  6.   

     List<Entity.PurchaseOrder> list  = (from f in db.PurchaseOrders
             select new Entity.PurchaseOrder
              { SupplierName=f.SupplierName,SupplierID=f.SupplierID }).ToLiST();
                    
                    return list.Distinct(new RowComparer ());    public class RowComparer : IEqualityComparer  
        {  
            public bool Equals(Entity.PurchaseOrder t1, Entity.PurchaseOrder t2)  
            {  
                return (t1.SupplierID == t2.SupplierID && t1.SupplierName== t2.SupplierName);  
            }  
            public int GetHashCode(Entity.PurchaseOrder t)  
            {  
                return t.ToString().GetHashCode();  
            }  
        }  
     
      

  7.   

    http://blog.csdn.net/q107770540/archive/2010/08/03/5784646.aspx
      

  8.   

    public class RowComparer : IEqualityComparer<Entity.PurchaseOrder>
      {   
      public bool Equals(Entity.PurchaseOrder t1, Entity.PurchaseOrder t2)   
      {   
      return (t1.SupplierID == t2.SupplierID && t1.SupplierName== t2.SupplierName);   
      }   
      public int GetHashCode(Entity.PurchaseOrder t)   
      {   
      return t.ToString().GetHashCode();   
      }   
      }