gpt4 book ai didi

c# - 避免 DataTable 查询和构建中的重复

转载 作者:太空宇宙 更新时间:2023-11-03 15:27:52 25 4
gpt4 key购买 nike

在查询数据表并将其保存到数据表时,避免重复的正确方法是什么。我正在使用下面的模式,一旦表格增长,它就会变得非常容易出错。我看了下面的提示。第一个 copyToDataTable() 看起来不太适用,第二个对我来说太复杂了。我想将下面的代码拆分为 2 个单独的方法(第一个是构建查询,第二个是检索数据表)。也许如果我在查询中避免使用匿名类型,这应该更容易避免对所有列名进行硬编码 - 但我不知何故迷失了这一点。

Filling a DataSet or DataTable from a LINQ query result set或者 https://msdn.microsoft.com/en-us/library/bb669096%28v=vs.110%29.aspx

public DataTable retrieveReadyReadingDataTable()
{
DataTable dtblReadyToSaveToDb = RetrieveDataTableExConstraints();
var query = from scr in scrTable.AsEnumerable()
from products in productsTable.AsEnumerable()
where(scr.Field<string>("EAN") == products.Field<string>("EAN"))
select

new
{
Date = DateTime.Today.Date,
ProductId = products.Field<string>("SkuCode"),
Distributor = scr.Field<string>("Distributor"),
Price = float.Parse(scr.Field<string>("Price")),
Url = scr.Field<string>("Url")
};


foreach (var q in query)
{
DataRow newRow = dtblReadyToSaveToDb.Rows.Add();

newRow.SetField("Date", q.Date);
newRow.SetField("ProductId", q.ProductId);
newRow.SetField("Distributor", q.Distributor);
newRow.SetField("Price", q.Price);
newRow.SetField("Url", q.Url);
}

return dtblReadyToSaveToDb;
}

最佳答案

首先,您必须确定“重复”在您的案例中意味着什么。根据您的代码,我会说重复项是日期、ProductId 和 Distributor 列中具有相同值的行。因此,首先为这些列添加一个多列主键。

其次,您应该添加某种代码,首先查询现有行,然后将这些现有行与您要创建的行进行比较。如果找到匹配项,则只需不插入新行即可。

关于c# - 避免 DataTable 查询和构建中的重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34526445/

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