2012-04-26 19 views
18

linqクエリの結果をリストに変換する必要があります。LINQクエリ結果をListに変換する方法は?

var qry = from a in obj.tbCourses 
        select a; 

List<course> lst = new List<course>(); 
lst = qry.ToList(); 

次のエラーが上記のコードのために発生しました:私は、次のコードを試してみました

Cannot implicitly convert type 
System.Collections.Generic.List<Datalogiclayer.tbcourse> to 
System.Collections.Generic.List<course> 
+0

どのように役立たれませんでしたか?それが起こらなかったとあなたは何を期待しましたか? – BrokenGlass

+0

ところで、あなたのコードははるかに短くなる可能性があります。 'var lst = obj.tbCourses.ToList();' –

+0

の複写可能[linq query to List の構文](http://stackoverflow.com/questions/7488980)/syntax-for-linq-query-to-liststring) – nawfal

答えて

15

そんなに作品を実行する必要がありません。..

var query = from c in obj.tbCourses 
     where ... 
     select c; 

は、次に、あなたが使用することができます。

List<course> list_course= query.ToList<course>(); 

それは私のために正常に動作します。

5

あなたが明示的にカスタム型courseにあなたのtbcourseエンティティを変換するselect new LINQのキーワードを使用する必要があります。 select newの例:あなたが何とかcourseのインスタンスに各tbcourseオブジェクトを変換する必要が

var q = from o in db.Orders 
     where o.Products.ProductName.StartsWith("Asset") && 
       o.PaymentApproved == true 
     select new { name = o.Contacts.FirstName + " " + 
           o.Contacts.LastName, 
        product = o.Products.ProductName, 
        version = o.Products.Version + 
           (o.Products.SubVersion * 0.1) 
        }; 

http://www.hookedonlinq.com/LINQtoSQL5MinuteOverview.ashx

8

。例えば、courseには、tbcourseが必要なコンストラクタを持つことができます。次に、このようにクエリを書くことができます:

var qry = from c in obj.tbCourses 
      select new course(c); 

List<course> lst = qry.ToList(); 
+0

これは創造的です!しかし、モデルプロジェクトがデータリポジトリに依存するようになるという欠点があります。これは小さなプロジェクトではうまくいくが、コンサルタントのアーキテクチャや分離によっては問題になる可能性がある。 – msigman

1

あなたができることは、コースの新しいインスタンスにすべてを選択し、後でそれらをリストに変換することです。

var qry = from a in obj.tbCourses 
        select new Course() { 
         Course.Property = a.Property 
         ... 
        }; 

qry.toList<Course>(); 
16
List<course> = (from c in obj.tbCourses 
       select 
       new course(c)).toList(); 

あなたは直接の呼び出しでリストにエンティティオブジェクトを変換することができます。別のデータ構造体(リスト、配列、辞書、ルックアップ、または文字列)に変換する方法があります

+0

これは最高の答えです。これは単一のコマンドではなく、 'from ... select ...' linq構文が標準形式( 'tbCourses.Select()'と同じ意味を維持していることも示しています) – miroxlav

関連する問題