【发布时间】:2012-08-08 14:45:44
【问题描述】:
假设我有一个来自表的一些列值的列表,我如何删除空字符串和重复值。请看以下代码:
List<string> dtList = dtReportsList.AsEnumerable().Select(dr => dr.Field<string>("column1")).ToList();
这是我刚刚编写的代码,但是 Amiram 的代码更优雅,所以我会在这里选择答案:
DataTable dtReportsList = someclass.GetReportsList();
if (dtReportsList.Rows.Count > 0)
{
List<string> dtList = dtReportsList.AsEnumerable().Select(dr => dr.Field<string>("column1")).ToList();
dtList.RemoveAll(x=>x == "");
dtList = dtList.Distinct().ToList();
rcboModule.DataSource = dtList;
rcboModule.DataBind();
rcboModule.Items.Insert(0, new RadComboBoxItem("All", "All"));
}
【问题讨论】:
-
了解 RemoveAll() 会改变 dtList;删除的每个元素都会强制 List 重新排列它使用的底层数组中较高索引中的元素。像 Amiram 使用他的 Where 方法那样跳过它们会更快。