我們一般系統在導入數據的時候,一般都是通過NPOI將excel數據轉換成DataTable,然后將DataTable導入到數據庫。在數據導入的過程中,其實很重要的一部就是檢查DataTable中的數據是否有重復的,如果存在重復的,我們需要識別出重復的數據。
在.net中,我們通過Rows屬性的cast()方法,可以很方便的過濾出重復的數據,下面的代碼即可實現
- var query = from e in dt.Rows.Cast<DataRow>()
- group e by new { sapCode = e.Field<string>("SAPComCode"), sapsupplierCode = e.Field<string>("SapSupplierCode") } into g
- select new { sapComCode = g.Key, count = g.Count() };
- var items = query.Where(A => A.count > 1);
- if (items.Count() > 0)//存在重復數據
- {
- string SameSapComCode = string.Empty;
- foreach (var item in items)
- {
- SameSapComCode += item.sapComCode + ";";
- }
- SameSapComCode = SameSapComCode.TrimEnd(';');
- result.Data = "以下SAP公司編號的數據存在重復,請檢查后重新導入<br/>" + SameSapComCode;
- return result;
- }
