2つのカスタムクラスがあります。
最初のクラスには基本データが含まれています。
public class Request
{
public Request(int lineID, string partNo, int qty, int reasonID, int typeID)
{
LineID = lineID;
PartNo = partNo;
Qty = qty;
ReasonID = reasonID;
TypeID = typeID;
}
public int LineID { get; private set; }
public string PartNo { get; private set; }
public int Qty { get; internal set; }
public int ReasonID { get; private set; }
public int TypeID { get; private set; }
}
2番目のクラスには、これらのRequestオブジェクトのリストが含まれ、次のような署名が付いています。
public class Requests : IEnumerable<Request>
{
private List<Request> list;
public Requests()
{
list = new List<Request>();
}
public int Add(Request item)
{
if (item != null)
{
foreach (var x in list.Where(r =>
(r.LineID == item.LineID) &&
(r.PartNo == item.PartNo) &&
(r.ReasonID == item.ReasonID) &&
(r.TypeID == item.TypeID)))
{
x.Qty += item.Qty;
return list.IndexOf(x);
}
list.Add(item);
return list.Count - 1;
}
return -1;
}
// other code
}
コードをテストしていて、アイテムを追加すると新しいアイテムがリストに追加されますが、重複を見つけるためのLINQクエリが機能しません。
2つの同一のアイテムがリストに追加された場合、コードをスマートにして数量を更新するだけでよいのですが、機能していないようです。
誰かがLINQクエリの何が問題になっているのか教えてもらえますか?