我有一个Datatable具有多个列和行,但我的焦点只在电子邮件地址列上。我也有一个电子邮件地址ArrayList。我需要遍历并比较ArrayList中的电子邮件地址和Datatable,并将它们从数据表中删除,前提是它们两个都包含相同的电子邮件地址,或者创建不包含这些电子邮件地址的新Datatable或ArrayList。这怎么可以在C#中完成?比较Datatable和ArrayList并删除C#中的值
1
A
回答
0
我认为ArrayList实现IEnumerable。 Datatable有一个asEnumerable(扩展?)方法。从那里你可以写一个linq查询。也许是一个“从datatable左连接arraylist选择哪里arraylist不是空”类型的查询。
好的,这可能是总的矫枉过正,但是自从我提起它之后,我会告诉你如何去做。
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable("TestTable");
dt.Columns.Add(new DataColumn("id",System.Type.GetType("System.Int32")));
dt.Columns.Add(new DataColumn("email",System.Type.GetType("System.String")));
ArrayList al = new ArrayList();
al.Add("[email protected]");
al.Add("[email protected]");
al.Add("[email protected]");
al.Add("[email protected]");
DataRow r1 = dt.NewRow();
r1["id"] = 1;
r1["email"] = "[email protected]";
dt.Rows.Add(r1);
DataRow r2 = dt.NewRow();
r2["id"] = 1;
r2["email"] = "[email protected]";
dt.Rows.Add(r2);
DataRow r3 = dt.NewRow();
r3["id"] = 1;
r3["email"] = "[email protected]";
dt.Rows.Add(r3);
DataRow r4 = dt.NewRow();
r4["id"] = 1;
r4["email"] = "[email protected]";
dt.Rows.Add(r4);
DataRow r5 = dt.NewRow();
r5["id"] = 1;
r5["email"] = "[email protected]";
dt.Rows.Add(r5);
var query = from row in dt.AsEnumerable()
join String a in al on row.Field<String>("email") equals a into ljtable
from a in ljtable.DefaultIfEmpty()
where a != null
select new { Email = row.Field<String>("email"), Checker = a == null ? "null" : a };
foreach (var v in query)
{
Console.WriteLine(String.Format("Email:{0} Left Join:{1}", v.Email, v.Checker));
}
Console.ReadLine();
}
}
+0
嗨史蒂夫 - 我不熟悉Linq。我仍然对我如何循环访问数据表中的电子邮件地址值和Arraylist中的电子邮件地址值 – Josh 2010-08-30 13:16:22
相关问题
- 1. ArrayList比较和获取共享值
- 2. datatable比较
- 3. Datatable比较行
- 4. C#,DataTable到ArrayList?
- 5. 比较DataTable列值与行筛选器中的枚举C#
- 6. 比较ArrayList和2D数组
- 7. 循环和比较arraylist
- 8. 马克并删除重复比较
- 9. 比较2 ArrayLists并删除重复项
- 10. 比较不同行,并删除重复的值
- 11. Python - 如何比较多个字典并删除重复的值?
- 12. PHP - 如何比较两个数组并删除重复的值
- 13. Python的比较和删除文件
- 14. arraylist比较
- 15. Arraylist对比较?
- 16. Android ArrayList比较
- 17. 比较,并创造新的ArrayList
- 18. 在Word表行和列中比较值以及删除或合并单元格
- 19. 比较动态ArrayList与ArrayList!并删除动态数组中不存在的元素
- 20. DataTable组合值和删除源行
- 21. 从arraylist中删除[和]
- 22. MySQL删除日期和时间比较
- 23. 比较2列和删除不匹配
- 24. 字符串比较和删除元素
- 25. 比较和删除api数据
- 26. PHP - array_diff所有相似的值进行比较和删除
- 27. 比较两种Arraylist并返回ID
- 28. Java ArrayList比较 - TicTacToe
- 29. ArrayList元素比较
- 30. 比较并删除在jquery的阵列中的项目对象
什么版本的.NET? .NET 1.1,因为你仍然在使用ArrayList? – 2010-08-29 03:02:43
请发布您迄今为止编写的代码。人们通常不喜欢只为你写代码。 – 2010-08-29 03:20:12
我所拥有的只是一个填充的ArrayList和一个填充的Datatable。我打算写一个Do While循环,我猜只要Datatable不为null,就会循环呢?在循环内,我会尝试将Datatable中的每个值与ArrayList中的每个值进行比较? – Josh 2010-08-30 12:06:42