linq语句返回重复记录

时间:2013-03-01 06:55:12

标签: linq

我想从使用中翻译linq语句     select * from dbo.vwListDetails其中productid ='20D9F725-6667-4F3A-893A-7D30FED550BE'

我已经编写了linq语句,但它返回了错误的数据

使用上面的sql语句返回:

productid                            productname custmerid customername 
20D9F725-6667-4F3A-893A-7D30FED550BE         nike         1        andy
20D9F725-6667-4F3A-893A-7D30FED550BE         nike         2        randy  

public IEnumerable<vwListDetails > GetAllListDetailConsumer(Guid productid)
{
    ObjectQuery<vwListDetails> cust = db.vwListDetails ;
    IEnumerable<vwListDetails> query = from d in cust 
                                       where d.productid == productid
                                       select d;
    return query;

}

如果我使用上面的linq c#代码返回

  productid                                  productname custmerid customer name 
  20D9F725-6667-4F3A-893A-7D30FED550BE         nike         1        andy
  20D9F725-6667-4F3A-893A-7D30FED550BE         nike         1        andy

2 个答案:

答案 0 :(得分:0)

您的where条件不正确。我想你需要那个:

public IEnumerable<vwListDetails > GetAllListDetailConsumer(string productid)
{
    ObjectQuery<vwListDetails> cust = db.vwListDetails ;
    IEnumerable<vwListDetails> query = from d in cust 
                                       where d.productid == productid
                                       select d;
    return query;
}

答案 1 :(得分:-1)

我怀疑你的病情是错的。您的producid将永远不会与GUID匹配。

  1. 你对谓词做错了。 where d.productid == new Guid(productid)
  2. 正如你在Sql的例子中所说的那样。你提到的是productid。但是使用LINQ你正在使用GUID。所以纠正谓词。

    var urList= db.vwListDetails.Select(e=>e.productid==yourCondition);