0

我有DataTable它给我带来了数据库中的以下数据。

  • Name
  • Address
  • CountryID

我想通过 LINQ 过滤我这边的数据:我有一个复选框列表,其中包含 ID 为 1、2、3、4 的国家/地区。我只想获得检查的国家/地区的结果。例如 1、2、4 作为 LINQ 的 CountryID。我想将它绑定到网格视图。

我正在使用以下代码:

foreach (ListItem cBox in chkGodownlst.Items)
{ 
    if (cBox.Selected)
    {
        var a = dt.AsEnumerable()
                  .Where(r => r.Field<int>("CountryID") == Convert.ToInt32(cBox.Value));
    }
}
4

2 回答 2

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.
于 2012-10-27T18:05:01.277 回答
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();

希望这会有所帮助!

于 2012-10-27T18:04:01.797 回答