2012-03-15 19 views
0

複数の列を選択して、取得した行をループし、選択したフィールドを文字列に格納したいと考えています。複数の列を選択し、選択した行をループする

選択a.firstnameような何か、retireved行を通じてa.id =「123」とループ顧客からa.lastnameし、それらを

FirstName = John; LastName = Doe 
FirstName = Steve; LastName = Smith 

のような文字列に書き込む必要があり、私はのようにLINQ文を持っています

IList<string> strgradeandbatch = new List<string>(); 
strgradeandbatch = context.GradeAndBatches 
         .Where(T => T.RequestGuid == request.ItemGuid) 
         .Select(T => new{T.GradeName, T.Batch}).ToList(); 

明らかにこれはanonymoのリストに選択の方法は、クエリ結果を投影し

答えて

1

で使用されようとしている

public class Grade 

{ 
    public string GradeName {get; set;} 
    public string Batch {get; set;} 
} 

新しいクラスを作成することです。 IList<string> strgradeandbatch = new List<string>()を削除し、匿名タイプvar strgradeandbatchを使用してください。

string GradeName, Batch; 
var strgradeandbatch = context.GradeAndBatches 
         .Where(T => T.RequestGuid == request.ItemGuid) 
         .Select(T => new{T.GradeName, T.Batch}).ToList(); 
foreach(var item in strgradeandbatch) 
{ 
    GradeName = item.GradeName; 
    Batch = item.Batch; 
} 

(注:匿名型を使用する場合は、メソッドからこの値を返すことはできません)

+0

これだけ 'GradeName'と' Batch'回数上書きされます。それほど役に立たない。 –

+0

はい、次のループの前に値を使用する必要があります。 –

1

事前にあなたの助けのためのit.Thanksを行う方法がわからない間違っている、と私たちはオブジェクトをタイプするので、文字列のリストと共に使用することができます。

一つの解決策私はあなたが、ほぼ正しいと思います選択方法

var strgradeandbatch = context.GradeAndBatches 
         .Where(T => T.RequestGuid == request.ItemGuid) 
         .Select(T => new Grade 
           { 
           GradeName = T.GradeName, 
           Batch = T.Batch 
          }).ToList(); 
関連する問題