2012-05-07 14 views
1

にインデックスを取得する私は、LINQクエリを持っている:0〜4のアイテムを返すことができのIQueryable結果

var result = (from CC in hc.ClaimCodings 
           join CM in hc.ClaimCodingProcedureCodeModifierXrefs on CC.ClaimCodingID equals CM.ClaimCodingID 
           join PCM in hc.ProcedureCodeModifiers on CM.ProcedureCodeModifierID equals PCM.ProcedureCodeModifierID 
           where CC.CTCustomerSubID == custSub && CC.ClaimID == claimID 
           select new { PCM.ModifierCode }); 

EDIT

。各モディファイアコードの値をプロパティに設定したい:

 public string ModCode1 { get; set; } 

    public string ModCode2 { get; set; } 

    public string ModCode3 { get; set; } 

    public string ModCode4 { get; set; } 

    Modcode1 = result.ModifierCode.getindex(0).firstordefault(); 

ModeCode2 = second result's ModifierCode; 

etc 

etc 

私がこれに完全に間違っていない限り、私はまだLINQとあまり良くないよ:(

+0

"返される各アイテムをプロパティに設定したい"←それを詳しく説明できますか?あなたの結果は一連の文字列になります。それらをプロパティにどのように割り当てたいですか? – Douglas

+0

申し訳ありませんが私は非常にはっきりしませんでした。データベースから返される値は、プロパティに設定する必要があります。 – broke

+1

@broke:それは*まだ*あまり明確ではない。他のものとは別に、 'select PCM.ModifierCode'ではなく、なぜ匿名型を使用しているのかは明らかではありません。 –

答えて

3

は、あなたが心の中に持っているものこれは

var result = 
(
    from CC in hc.ClaimCodings 
     join CM in hc.ClaimCodingProcedureCodeModifierXrefs 
      on CC.ClaimCodingID equals CM.ClaimCodingID 
     join PCM in hc.ProcedureCodeModifiers 
      on CM.ProcedureCodeModifierID equals PCM.ProcedureCodeModifierID 
    where CC.CTCustomerSubID == custSub && CC.ClaimID == claimID && 
     PCM.ModifierCode != null 
    select PCM.ModifierCode 
).ToList(); 

ModCode1 = result.Length > 0 ? result[0] : null; 
ModCode2 = result.Length > 1 ? result[1] : null; 
ModCode3 = result.Length > 2 ? result[2] : null; 
ModCode4 = result.Length > 3 ? result[3] : null; 

主な変更点:?LINQクエリ内

  • 追加PCM.ModifierCode != nullチェックを削除
  • LINQクエリ結果をList<string>からToList()に変換しました。

しかし、BrokenGlass氏によると、おそらくリストを保存する方が良いでしょう。

+0

これは私が必要と思うかもしれないと思う。私はプロパティを使用しているので、ASP.NET webformのリストビュー内にある4つのテキストボックスにバインドできます。 – broke

+0

その場合、あなたのリストの各項目に 'TextBox'を構築する' Repeater'を使わないのはなぜですか? – Douglas

+0

前にリピータを使用したことがありません...あなたは例がありますか? – broke

1

結果に対してToArray()を呼び出して、すぐにクエリを実行して値の配列を返すことができます。次に、配列の長さをチェックする3次演算子の短縮形を使用して、プロパティに値を割り当てることができます。

res = result.Take(4).ToArray(); 
Modcode1 = res.Length > 0 ? res[0] : null; 
Modcode2 = res.Length > 1 ? res[1] : null; 
Modcode3 = res.Length > 2 ? res[2] : null; 
Modcode4 = res.Length > 3 ? res[3] : null;