pd是我的页面;
ProductDetail pd = new ProductDetail();
获取数据并在数据中加强数据
var data =
from product in db.Products
from orders in db.Orders
from od in db.OrderDetails
from dpt in db.Dpts
where orders.CId.Equals(
(from name in db.Companies
where name.Cname.Equals(selectedcomp)
select name.CId).FirstOrDefault())
&& od.OrdId.Equals(orders.OrdId)
&& product.PId.Equals(od.PId)
select new
{
orders.Billno ,
orders.Date,
orders.pharm ,
product.Pname,
product.Purchasedate,
product.Purchaserate,
product.Salesrate,
product.Supplier,
od.Quantity,
od.Amount
};
它在列表框中显示两次数据的值。
pd.ProductDescription.ItemsSource =
(from dat in data
select dat).ToList();
答案 0 :(得分:2)
我认为您的问题是Dpts
表的交叉连接。您不在where或select中使用该表中的结果,因此我认为您不需要它。尝试删除from dpt in db.Dpts
并查看是否可以解决您的问题。我的猜测是你得到n个重复项,其中n是db.Dpts
中的总行数。
答案 1 :(得分:0)
从LINQ或SQL中的查询中获取重复项时,首先检查错误数据,然后将其作为错误连接进行调查。最好的办法是将其拆分为一个表,然后逐个添加连接,直到获得重复。然后使该连接具体到足以使其停止复制。
答案 2 :(得分:0)
@juharr是对的。您不在where子句中使用db.Dbts,因此您将交叉连接重复结果。可能在db.Dbts表中有2条记录。
我认为您应该处理您的查询。 几点提示: