我有DataTable
,它带来了数据库中的数据。
Name
Address
CountryID
我想通过LINQ过滤我身边的数据:我有一个复选框列表,其中包含ID为1,2,3,4的国家/地区。我想只获取已检查国家/地区的结果。例如LINQ为CountryID的1,2,4。我想将它绑定到网格视图。
我使用以下代码:
foreach (ListItem cBox in chkGodownlst.Items)
{
if (cBox.Selected)
{
var a = dt.AsEnumerable()
.Where(r => r.Field<int>("CountryID") == Convert.ToInt32(cBox.Value));
}
}
答案 0 :(得分:1)
尝试这样的事情:
// Get all checked id's.
var ids = chkGodownlst.Items.OfType<ListItem>()
.Where(cBox => cBox.Selected)
.Select(cBox => cBox.Value)
.ToList();
// Now get all the rows that has a CountryID in the selected id's list.
var a = dt.AsEnumerable().Where(r =>
ids.Any(id => id == r.Field<int>("CountryID"))
);
// Create a new table.
DataTable newTable = a.CopyToDataTable();
// Now set the new table as DataSource to the GridView.
答案 1 :(得分:0)
你应该尝试这个:
var collection = new List<dynamic>();
foreach (ListItem cBox in chkGodownlst.Items)
{
if(cBox.Selected)
{
collection.AddRange(dt.AsEnumerable().Where(r => r.Field<int>("CountryID") == Convert.ToInt32(cBox.Value)));
}
}
GridView1.DataSource = collection;
GridView1.DataBind();
希望这会有所帮助!!