0

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));
    }
}
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 に答える