3 ضمیمه
حذف ردیفهای یک دیتاتیبل از دیتاتیبل دیگر بوسیله یک ستون مشترک
سلام دوستان و اساتید
من توی برنامه سی شارپیم 2 تا دیتاتیبل دارم (تاکید می کنم دیتاتیبل ... در واقع یکی از پایگاه آفلاین فراخونده شده یکی از پایگاه آنلاین)
دیتاتیبل اولم این شکلیه (برای مثال) :
ضمیمه 148599
ستون اول یک سری کد منحضر به فرد هست که تکراری هم ندارد
و دیتاتیبل دومم اینه :
ضمیمه 148600
خب با توجه به عکس در واقع کدهای 11 و 33 و 77 در جدول اول و در جدول دوم مشابه هستند
در واقع من میخوام نتیجه کار توی دیتاتیبل سوم ذخیره بشه به نحوی که از دیتاتیبل اول هر دو ستون رو فراخوانی کنم که تا اینجاش رو بلدم و نکته مهم تر اینکه بر اساس ستون اول من بیام
اون مشترکات دیتاتیبل دوم رو از دیتاتیبل اول حذف کنم
به عبارت ساده تر کل داده های ستون اول از دیتاتیبل اول در نتیجه لحاظ بشن به غیر مواردی که در دیتاتیبل دوم هستند
نتیجه به صورت عکس :
ضمیمه 148601
خودم جستجو کردم توی stackoverflow یه سری مشابهات دیدم ولی نتونستم انجامش بدم
ممنون میشم راهنمایی کنید
نقل قول: تفریق کردن یک دیتاتیبل از دیتاتیبل دیگر بوسیله یک ستون مشترک
از اساتید و دوستان کسی نمیتونه این مورد رو کمک کنه
ممنون از همگی
نقل قول: تفریق کردن یک دیتاتیبل از دیتاتیبل دیگر بوسیله یک ستون مشترک
شما میتونید دیتاتیبل هاتون تبدیل به لیست کنید و از LINQ کمک بگیرید
var dt1 = table1.AsEnumerable().ToList();
var dt2 = table2.AsEnumerable().ToList();
سپس با یک Select کدهاتون تبدیل به آرایه کنید و از توابع LINQ بهره بیرید جستجویی بزیند با این شزط که :کدهایی در جدول 1 که در جدول 2 وجود ندارند
var getId = dt2.Select(s => s["KOD"]).ToArray();
var dt3 = dt1.Where(x => !getId.Contains(x["KOD"])).ToList();
یا بدینصورت هم میتونید
var table3 = table1.Copy();
table3.AcceptChanges();
table3.Merge(table2);
var dt5 = from row in table3.AsEnumerable()
where row.RowState != DataRowState.Modified
select row;
میتونید از تابع تفاضل هم استفاده کنید
var dt = table1.AsEnumerable().Except(table2.AsEnumerable() , DataRowComparer.Default).ToList();
1 ضمیمه
نقل قول: تفریق کردن یک دیتاتیبل از دیتاتیبل دیگر بوسیله یک ستون مشترک
از این کد هم می توانی استفاده کنی
DataTable table3 = new DataTable();
var ERC1 = table1.AsEnumerable().Select(a => new { kod = a["kod"].ToString() });
var ERC2 = table2.AsEnumerable().Select(b => new { kod = b["kod"].ToString() });
var exceptAB = ERC1.Except(ERC2);
table3 = (from dRow in table1.AsEnumerable()
join ab in exceptAB on dRow["kod"].ToString() equals ab.kod
select dRow).CopyToDataTable();
ضمیمه 148610