2017-07-26 3 views
0

一部の項目のみを取ります。FilterはDataGridViewの要素と同じです

<ConfigRegolatori> 
<Id>6</Id> 
<Address>92</Address> 
<Category>90</Category> 
<Mode>TC_K</Mode> 
<Model>Z4TC</Model> 
<Name>KT6</Name> 

<ConfigRegolatori> 
<Id>7</Id> 
<Address>7</Address> 
<Category>100</Category> 
<Mode>TC_K</Mode> 
<Model>M9_Servo</Model> 
<Name>KT7</Name> 

<ConfigRegolatori> 
<Id>8</Id> 
<Address>92</Address> 
<Category>90</Category> 
<Mode>TC_K</Mode> 
<Model>Z4TC</Model> 
<Name>KT10</Name> 

コード部分は、私はアドレスフィールドに同じ値を持つ複数の行を持っているので、私が取得したいと思い、次の

dtConfReg = new DataTable(); 
dtConfReg.ReadXml(Principale.strPathConfig + "\\ConfigRegulators.xml"); 
dtConfReg.TableName = "ConfigReg"; 

bsouReg = new BindingSource(); 
bsouReg.DataSource = dtConfReg; 
dgvwConfigReg.DataSource = bsouReg; 

であるが、以下のように

Excelファイルのスキーマがあります各値の行。たとえば、私は92でAddressタグを持つ複数のレコードを持っています、私はちょうど1つを抽出したいです。

PS:重要な情報は、私はあなたがDataTableDefaultViewプロパティを使用することができますフレームワーク2.0

おかげ

+0

xmlを読み込んだ後で、 'DataSource'を設定し、複数のレコードを持たずに変更したリストを' DataContext'として設定するのはなぜですか? –

+0

次のコードを試してください:DataTable newTable = dtConfReg.AsEnumerable()。GroupBy(x => x.Field ( "Address"))選択(x => x.FirstOrDefault())。CopyToDataTable(); – jdweng

+0

DataSourceの割り当て後にGoupingを行うことはできません。グリッドに割り当てる前にLinqのデータをフィルタリングする必要があります –

答えて

0

を使用しているということです。

dtConfReg.DefaultView.RowFilter = "Address = '92'"; 

完全なソリューションは、次のようになります。XMLから直列化復元値がint型である場合

dtConfReg = new DataTable(); 
dtConfReg.ReadXml(Principale.strPathConfig + "\\ConfigRegulators.xml"); 
dtConfReg.TableName = "ConfigReg"; 
dtConfReg.DefaultView.RowFilter = "Address = '92'"; 

bsouReg = new BindingSource(); 
bsouReg.DataSource = dtConfReg.DefaultView; 
dgvwConfigReg.DataSource = bsouReg; 

注フィルタが値を単一引用符を使用していること、それらを使用しないでください。

UPDATE

私は、そのアドレスでフィルタリングするためのコードを変更しました。このソリューションは、いくつかの列の値でデータをフィルタリングする場合に機能します。

XMLから異なる値を取得する場合は、まずXMLから値を取得し、既存のコードを使用してデータテーブルをUIコントロールにバインドすることをお勧めします。

+0

私はあなたのソリューションを試しましたが、何も変わっていません。 ほとんどの場合、私はひどく説明しました。別の住所ごとにタグを付けたいからです。 つまり、もし私が90番のアドレスを見つけたら、93番のアドレスを見つけたら90番のアドレスに出ますが、90番のアドレスに再び遭遇した場合は最初に取ってから取っていません。 – fede186

+0

申し訳ありませんがC言語での経験はあまりよくありません。英語をよく理解していないので、私はあなたの最後の文を理解できませんでした。 – fede186

関連する問題