我想從列表中刪除重複項,我綁定到一個gridview。但是不管我做什麼,重複的東西都會留下。LINQ C#組合列表,刪除重複項
變量lol,是爲了測試Distinct而添加的,但它不起作用。 當前代碼:
GWportalDataContext db = new GWportalDataContext();
DeliveryTimeRepository dltRep = new DeliveryTimeRepository();
var query = from o in db.Orders
join y in db.OrderLines on o.OrderID equals y.OrderID
join x in db.Products on y.ItemNumber equals x.ItemNumber
where o.AccountNumber == AppSession.CurrentLoginTicket.AccountNumber
select new
{
o.OrderID,
o.AxaptaSalesId,
y.ItemNumber,
x.Name,
x.ProductFormatName,
y.Quantity,
y.Price,
Status = dltRep.getOrderStatus(o.OrderID, o.AxaptaSalesId, y.ItemNumber).Substring(0, dltRep.getOrderStatus(o.OrderID, o.AxaptaSalesId, y.ItemNumber).LastIndexOf("|")),
Levering = dltRep.getOrderStatus(o.OrderID, o.AxaptaSalesId, y.ItemNumber).Substring(dltRep.getOrderStatus(o.OrderID, o.AxaptaSalesId, y.ItemNumber).LastIndexOf("|")).Replace("|", "")
};
var query2 = from o in db.AxSales
join y in db.AxSaleLines on o.SalesId equals y.SalesId
join x in db.Products on y.ItemNumber equals x.ItemNumber
where o.AccountNumber == AppSession.CurrentLoginTicket.AccountNumber
select new
{
OrderID = o.SalesId,
AxaptaSalesId = o.SalesId,
y.ItemNumber,
x.Name,
x.ProductFormatName,
y.Quantity,
Price = y.SalesPrice,
Status = dltRep.getAxOrderStatus(o.SalesId, y.ItemNumber).Substring(0, dltRep.getAxOrderStatus(o.SalesId, y.ItemNumber).LastIndexOf("|")),
Levering = dltRep.getAxOrderStatus(o.SalesId, y.ItemNumber).Substring(dltRep.getAxOrderStatus(o.SalesId, y.ItemNumber).LastIndexOf("|")).Replace("|", "")
};
//Query 1 start
var dataToList = query.ToList();
List<object> deletedItems = dataToList.Where(item => orderDeleted(item.OrderID, item.AxaptaSalesId)).Cast<object>().ToList();
var datatoGrid = dataToList.Except(deletedItems);
// Query 1 end
//Query 2 start
var dataToList2 = query2.ToList();
List<object> deletedItems2 = dataToList2.Where(item => axOrderDeleted(item.AxaptaSalesId)).Cast<object>().ToList();
var dataToGrid2 = dataToList2.Except(deletedItems2);
//Query 2 end
var combined = datatoGrid.Union(dataToGrid2);
var lol = combined.Distinct();
e.Result = lol;
非常感謝,你讓我意識到來自Axsale的OrderID是來自Orders的varchar和orderid,是數據類型int。刪除演員並添加另一個連接到AxSales解決了它。現在正確的訂單數量顯示! :) – KLIM8D 2012-01-06 15:39:56
很高興能幫到你!歡迎來到Stack Overflow。請記住在允許的情況下將您的問題標記爲已回答。 – 2012-01-06 16:34:01