web-dev-qa-db-ja.com

2つの要素を選択するLinq UNIONクエリ

LINQクエリを使用してデータベーステーブルから2つの要素を選択します。UNIONを使用する例を見ました修正できないエラーが表示され、それでも修正できるかどうかはわかりません。だからここに私のクエリです:

_    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();
_

UNIONIQueryableを使用してIEnumarebaleを使用しようとすると文句を言っているようです。私はこのようにToString()を追加することでそれを修正しようとしました-_(tom.ID).ToString_は_Visual-Studio-2010_のエラー下線をきれいにしましたが、ランタイムでは次のようになります:

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

タイ、レロン。

18
Leron

編集:

OK LINQtoEFのint.ToString()が失敗する理由を見つけました。この投稿を読んでください: Linqからエンティティへのintから文字列への変換に関する問題

これは私の側で機能します:

        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();

ありがとう、私は今日何かを学んだ:)

38
Tom