如何使用C#.net?
中的Linq表达式执行下面的代码目前,我正在使用DataTable的foreach循环。
我想用LINQ或AsEnumerable()函数来做。
当前的C#代码:
protected String GetRecommendMasterSquence()
{
ArrayList strItems = new ArrayList();
DataTable dt = new DataTable();
foreach(DataRow dr in dt.Rows) {
if (Convert.ToBoolean(dr["isSelected"])) {
strItems.Add(Convert.ToString(dr["RecommendID"]));
}
}
return string.Join(",", (string[]) strItems.ToArray(Type.GetType("System.String")));
}
答案 0 :(得分:3)
您可以在Enumerable上使用string.Join
和.ToArray()
的组合。
string str = string.Join(",", dt.AsEnumerable()
.Where(r => r.Field<bool>("isSelected"))
.Select(c=>c.Field<string>("RecommendID"))
.ToArray());
答案 1 :(得分:2)
您可以使用table.AsEnumerable
+ Enumerable.Where
:
var selectedRecommendIDs = dt.AsEnumerable()
.Where(r => r.Field<bool>("isSelected"))
.Select(r => r.Field<int>("RecommendID"));
string result = string.Join(",", selectedRecommendIDs);
请注意,我假设isSelected
是bool
列,而RecommendID
是int
列。如果不是这样的话,相应地改变它。无论如何它应该给你一个想法。最好使用DataRow.Field
扩展方法,因为它是强类型的并且支持可空类型。
答案 2 :(得分:0)
var ids = dt.Rows
.Where(x => !Convert.ToBoolean(x["isSelected"]))
.Select(x => Convert.ToString(x["RecommendID"]))
return string.Join(",", ids);
答案 3 :(得分:0)
var recommendIds =
from myRow in dt.AsEnumerable()
where myRow.Field<bool>("isSelected") == true
select myRow.Field<string>("RecommendID");
return string.Join(",", recommendIds.ToArray());