2013-02-22 30 views
9

LINQクエリを使用してデータベーステーブルから2つの要素を選択したい場合は、UNIONを使用した例を見ましたが、これは私には多大な経験はありませんが、とにかく修正可能なのかどうかわかりません。それはIEnumarebaleIQueryableUNIONを使用しようと文句を言っているようだとしてLinq UNIONクエリで2つの要素を選択する

IList<String> materialTypes = ((from tom in context.MaterialTypes 
            where tom.IsActive == true 
            select tom.Name) 
            .Union(from tom in context.MaterialTypes 
            where tom.IsActive == true 
            select (tom.ID))).ToList(); 

:だからここに私のクエリです。私はこのようなToString()追加することによって、これを修正しようとした - Visual-Studio-2010にエラー下線をクリーニングにつながっ(tom.ID).ToStringをしかし、実行時に私が取得:

{"LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression."} 

のTy、Leronを。

+4

「Union」を使用するのではなく、なぜ「new {tom.Name、tom.ID}」を選択していませんか? –

+0

匿名型からstringへ変換できないエラーが発生した場合、データソースを 'DataSource'として使用したいと思います.ToString()を' .ToList() 'の直前に追加すると、別の変換が取得されますエラー - 今回は 'char'から' String'に至り、 'Union'はこのような状況で見た解決策です。別の方法がありますか? – Leron

答えて

25

EDIT:

[OK]を、私はLINQtoEFでint.ToString()が失敗した理由は、この記事を読んでくださいが見つかりました: Problem with converting int to string in Linq to entities

をこれが私の側に動作します:あなたに

 List<string> materialTypes = (from u in result.Users 
             select u.LastName) 
         .Union(from u in result.Users 
           select SqlFunctions.StringConvert((double) u.UserId)).ToList(); 

IList<String> materialTypes = ((from tom in context.MaterialTypes 
             where tom.IsActive == true 
             select tom.Name) 
             .Union(from tom in context.MaterialTypes 
             where tom.IsActive == true 
             select SqlFunctions.StringConvert((double)tom.ID))).ToList(); 

ありがとう今日何かを学んだことがあります:)

+0

再び 'LINQ to Entitiesは 'System.String ToString()'メソッドを認識せず、このメソッドをストア式に変換することはできません。「元の投稿の間違いは内部例外でした。これは私があなたのやり方を試すときに得られるものです。私は大括弧と同じだと思います。 – Leron

+0

笑、私は昼食に行き、後にそれをテストします。それはあなたの答えを受け入れるつもりなら – Leron

+0

私のポストが変更されたので、私はそれがより明確だと思うように変更しました:) – Tom

関連する問題