我有question,我提供了 解决方案。但是,我觉得这样的效率并不高:
using (DataContext context = new DataContext(SqlConnection)
{
var custInfo = context.GetTable<tbl_CustomerInfo>();
string compID = ImportCust.Rows[0]["CompanyID"].ToString();
var imports = from cust in ImportCust.AsEnumerable()
select cust.Field<int>("CustomerID");
var dupes = from import in imports
join cust in custInfo
on import equals cust.CustomerID
where cust.CompanyID== pivnum
select cust;
var records = dupes.GetEnumerator();
while (records.MoveNext())
{ custInfo.DeleteOnSubmit(records.Current); }
context.SubmitChanges();
}
我已使用Stopwatch
查看从records
到完成SubmitChanges
的迭代所经过的时间。经过的时间似乎没有押韵或理由:
10666条记录在20秒内完成
15425条记录在12秒内完成
在21秒内完成289条记录
显然,如果我放弃索引,有一件事可以加快速度。可以通过编程方式完成吗?另外,有没有比我提供的更好的方法?
答案 0 :(得分:3)
你可以使用SQL语句:
-- TSQL (SQL Server 2005/2008): --
select CompanyID from tbl_CustomerInfo
group by CompanyID
having COUNT(*)>1
答案 1 :(得分:2)
Tefod sql的linq版本:
from ci in dc.tbl_CustomerInfo
group ci by ci.CompanyID into g
where g.Count() > 1
select g.Key