如何 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");
}
我需要的是当用户尝试添加新项目时,应该查询此项目代码是否在 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");
}