有没有办法在linq中的以下代码中取出foreach但产生相同的输出?
DropDownList ddl = new DropDownList();
foreach (DataRow row in ds.Tables[0].Rows)
{
if ((byte)row["ListTypeID"] == 0)
{
item = new ListItem(row["ListText"].ToString(), string.Format("{0}:{1}", row["ListTypeID"].ToString(), row["ListID"].ToString()));
ddl.Items.Add(item);
}
else
{
item = new ListItem(row["ListText"].ToString(), string.Format("{0}", row["ListID"].ToString()));
ddl.Items.Add(item);
}
}
Run Code Online (Sandbox Code Playgroud)
我没有把所有东西塞进一行lambda,而是更喜欢可读性而不是节省行空间:
ddl.Items.AddRange(ds.Tables[0].Rows.Select( row =>
{
var listText = row["ListText"];
var listTypeId = (byte)row["ListTypeID"];
var listId = row["ListID"];
var format = listTypeId == 0 ? "{0}:{1}" : "{1}";
var itemText = String.Format(format, listTypeID, listId);
return new ListItem(listText, itemText);
}
));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
672 次 |
| 最近记录: |