如何 select 基于另一个重复值的值 - C#

How to select values based on another duplicate value - c#

我需要的是当用户尝试添加新项目时,应该查询此项目代码是否在 OrderProductLine 中。如果是,则消息框必须显示 "This product already in the List",否则消息框必须显示 "You can add this Item"。所以我可以稍后调用该方法。

示例:

Form for User add product to OrderProductLine

在 link 上方您可以看到用户已经添加到列表中的两个项目 (OrderProductLine)。因此,如果用户再次尝试添加相同的项目,则必须显示消息框。

事情是这样的…… FROM OrderProductLine WHERE OrderNo = "3" SELECT ALL ItemCode

DataModel

public class OrderProductLine
    {
        [Key]
        public int ID { get; set; }
        public int OrderNo { get; set; } // Foreign Key
        public int ItemCode { get; set; } // Foreign Key
        public int SupplierID { get; set; } // Foreign Key
        [Required]
        public float Quantity { get; set; }
        public float Discount { get; set; }
        [Required]
        public float Amount { get; set; }
    }

All Record of OrderProductLines

DataGridView

private void LoadProductData()
        {
            try
            {
                BindingSource bs = new BindingSource();
                using (ShopDbContext db = new ShopDbContext())
                {
                    var value = int.Parse(lblOrderNo.Text);
                    var prd = from OrderProductLine in db.OrderProductLines
                              where OrderProductLine.OrderNo == value
                              select new
                              {
                                  ID = OrderProductLine.ID,
                                  ItemCode = OrderProductLine.ItemCode,                                  
                                  Quantity = OrderProductLine.Quantity,
                                  Discount = OrderProductLine.Discount,
                                  Amount = OrderProductLine.Amount
                              };
                    bs.DataSource = prd.ToList();
                    ProductList.DataSource = bs;
                    ProductList.Columns[0].Visible = false;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

到目前为止我已经试过了

ShopDbContext db = new ShopDbContext();

var ICode = int.Parse(txtItemCode.Text);
var lblOrd = int.Parse(lblOrderNo.Text);

var query = db.OrderProductLines.Where(p => p.OrderNo == lblOrd).Select(u => u.ItemCode == ICode).FirstOrDefault();

if (query != null)
{
    MessageBox.Show("This Item Already added");
}
else
{
    MessageBox.Show("You can add this Item");
} 

这是不对的 结果:始终为真

根据 Furkan Öztürk 的回应,这是可行的。

var query = db.OrderProductLines
            .Where(p => p.OrderNo == lblOrd)
            .FirstOrDefault(u => u.ItemCode == ICode);

if (query != null)
{
     MessageBox.Show("This Item Already added");
}
else
{
     MessageBox.Show("You can add this Item");
}   

根据 Steve Greene 的回应,这也有效。

if (db.OrderProductLines.Any(p => p.ItemCode == ICode && p.OrderNo == lblOrd))
{
    MessageBox.Show("This Item Already added");
}
else
{
    MessageBox.Show("You can add this Item");
}