2011-06-26 8 views
1

linqからxmlクエリの例が必要です。複数のListBoxアイテムからのLINQ to XMLクエリ

私はSelectionModeが2つのリストボックスを持っており、Multipleに設定されています。

最初のListBoxを取り込むための私のクエリは次のとおりです。

var query = doc.Root.Descendants("Articles") 
        .OrderBy(b => b.Element("Category").Value) 
        .Select(b => b.Element("Category").Value) 
        .Distinct(); 

し、それを結合:

lbxItems.DataSource = query; 
lbxItems.DataBind(); 

だから私は、最初のリストボックス内のすべての値を持っている、と私はそのリストボックスから項目を選択したときに、私2番目のListBoxに値を設定します。 SelectedIndexChanged上だから、

私は別のクエリがあります:私は1つの項目を選択するが、私は同じことをやってますが、複数の選択項目からされたクエリが必要な場合

var query = doc.Root.Descendants("Articles") 
       .Where(b => b.Element("Category").Value.Equals(lbxItems.SelectedValue)) 
        .OrderBy(b => b.Element("SubCategory").Value) 
        .Select(b => b.Element("SubCategory").Value) 
        .Distinct(); 

取り組んでいます。

ありがとうございます。

答えて

2

はそうのようなあなたのwhere句変更してみてください:

.Where(b => lbxItems.Items 
    .Cast<ListItem>() // needs a cast 
    .Where(i => i.Selected) 
    .Select(i => i.Value) 
    .Contains(b.Element("Category").Value)) 

をアイデアが選択されているどのような項目を決定し、あなたのカテゴリ値が選択されたものの中にあるかどうかを確認することです。

+0

このいただきありがとうございますが、これはエラーを投げている: System.Web.UI.WebControls.ListItemCollectionは 『 I'amは本当に私はどこに知らない学習開始どこ」の定義が含まれていません』ここから行く。 ありがとう – ereyes

+0

@ereyes:ああ、 'Items'プロパティは、LINQ操作を実行できない' ListItemCollection'を返します。今はうまくいくはずです。 –

+0

ありがとうございます。 これで動作します。 – ereyes