C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: comboBoxで選択した文字列を変数とする


(過去ログ 118 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■69316 / inTopicNo.1)  comboBoxで選択した文字列を変数とするLinq
  
□投稿者/ Яアルビノフォックス (19回)-(2013/12/16(Mon) 14:31:22)

分類:[C#] 

Visual Studio 2010 言語c#での質問です。

comboBoxで選択した内容を参照してソートを行いたいので、以下のようなコードを書いてみました。

string KeyWord1 = comboBox6.SelectedValue.ToString();
string KeyWord2 = comboBox7.SelectedValue.ToString();
string KeyWord3 = comboBox8.SelectedValue.ToString();

var SelectColumn = new Dictionary<string,DataColumn>{
{"1",assetMannageDataSet1.DataGridViewType.IdColumn},
{"2",assetMannageDataSet1.DataGridViewType.GoodsGroupColumn},
{"3",assetMannageDataSet1.DataGridViewType.GoodsNameColumn},
{"4",assetMannageDataSet1.DataGridViewType.MakerNameColumn},
{"5",assetMannageDataSet1.DataGridViewType.UsedManColumn},
{"6",assetMannageDataSet1.DataGridViewType.PlaceColumn},
{"7",assetMannageDataSet1.DataGridViewType.StatesColumn},
};

var q = from p in assetMannageDataSet1.DataGridViewType
orderby SelectColumn[KeyWord1] ascending//, SelectColumn[KeyWord2] , SelectColumn[KeyWord3]
select p;

dataGridView1.DataSource = q.ToList();

デバッグを行ったところ、SelectColumn[KeyWord1]には意図した文字列(列かどうかは不明)が入っていましたが、それを列として引用しようとすると特になにも起こりません。(orderbyが機能していない)
どうしたら良いでしょうか?
引用返信 編集キー/
■69317 / inTopicNo.2)  Re[1]: comboBoxで選択した文字列を変数とする
□投稿者/ Hongliang (140回)-(2013/12/16(Mon) 15:12:06)
2013/12/16(Mon) 15:22:06 編集(投稿者)

> orderby SelectColumn[KeyWord1] ascending
orderby句には比較する値を記述します。
この記述だと、比較する値は全ての行においてSelectColumn[KeyWord1]という同一のオブジェクトであることになり、つまり比較しても差は出ないので並べ替えもされません。
p.Field<T>(SelectColumn[KeyWord1])などのように、行の該当列の値を、比較する値として提出する必要があります。

-追記-
列の型が不定なら、Field<object>(...)とかで。
引用返信 編集キー/
■69320 / inTopicNo.3)  Re[2]: comboBoxで選択した文字列を変数とする
□投稿者/ Яアルビノフォックス (20回)-(2013/12/16(Mon) 16:52:45)
No69317 (Hongliang さん) に返信

返信ありがとうございました。
intやstringにboolも混ざっているので

var q = from p in assetMannageDataSet1.DataGridViewType
orderby p.Field<object>(SelectColumn[KeyWord1])
select p;

としたら解決いたしました。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -