gpt4 book ai didi

c# - 如何使用 LINQ 匹配两个相同的数据库表?

转载 作者:行者123 更新时间:2023-11-30 12:54:03 25 4
gpt4 key购买 nike

我想匹配 2 个相同的表:

sourceProducts (productName, ProductionDate, ManID, shipper, distributer)
CommProducts (productName, ProductionDate, ManID, shipper, distributer)

但行数和记录内容可能不同。如何从一个表中选择某个 record = raw 并从另一个表中获取其克隆记录(例如,检查是否存在相同的记录)?我如何使用 LinQ 执行此操作?

更新:这是 LINQ 代码:

    protected void checkBtn_Click(object sender, EventArgs e)
{

MyProductsDataContext mySdb = new MyProductsDataContext();

Product mypro = new Product { ManId = int.Parse(TxtManI.Text), ProductName = TxtProN.Text, ProductionDate =DateTime .Parse ( TxtProDat.Text), Shipper = TxtShipI.Text, Distributer = TxtDistI.Text };

var spro = (from p in mySdb.Products
select new { p.ManId, p.ProductName, p.ProductionDate, p.Shipper, p.Distributer }).
Intersect(from s in mySdb.SourceProducts select new { s.ManId, s.ProductName, s.ProductionDate, s.Shipper, s.Distributer });

if (spro != null)
{
LblMessage.Text = "Acceptable product Data Inserted Sucessfully";
InsertData();
}
else
{
LblMessage.Text = "Invalid Product or bad Entry Please retype";
}
}

最佳答案

我会加入 ManId,然后比较 where 子句中的其余值:

bool productExists = (
from p in mySdb.Products
join s in mySdb.SourceProducts
on p.ManId equals s.ManId
where p.ProductName == s.ProductName
&& p.ProductionDate == s.ProductionDate
&& p.Shipper == s.Shipper
&& p.Distributer = s.Distributer
select new { p.ManId, p.ProductName, p.ProductionDate, p.Shipper, p.Distributer }
).Any();

if (productExists)
{
LblMessage.Text = "Acceptable product Data Inserted Sucessfully";
InsertData();
}
else
{
LblMessage.Text = "Invalid Product or bad Entry Please retype";
}

我使用 Any() 生成了一个高效的 EXISTS SQL 查询。如果您确实需要使用返回的产品,则可以改用 SingleOrDefault()FirstOrDefault()

我也没有在任何地方看到您正在使用新产品的 ID - 您可能还需要将该过滤器添加到查询中:

Product   mypro = new Product  { ... };

bool productExists = (
from p in mySdb.Products
where p.ManId equals mypro.ManId
join s in mySdb.SourceProducts
on p.ManId equals s.ManId
...

关于c# - 如何使用 LINQ 匹配两个相同的数据库表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/790230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com