2011-01-17 3 views
1

私はデータベースから結果を返す次のコードを持っています。columnName = Y'。コードワードは、私がどのフィールドがクエリによって返されるかを制限したいときにうまくいきます。複数のフィールドをLinqラムダから返す

私はエラー

が暗黙のうちに 'System.Linq.IQueryable [MyApp.Models.Approved]' にタイプ 'System.Linq.IQueryable [AnonymousType#1]を' 変換できません取得します。明示的な変換は、それは私がキャストを作るのですかエラーに

return db.Approved.Where(predicate).Select(x =>new{x.RefNo, x.RefGroup, x.Location }); 

行方を取得し、このライン上にある(あなたはキャストが欠けている?)

public IQueryable<Approved> ReturnRecordsByObjectiveFlag(string columnName) 
    { 
     var param = Expression.Parameter(typeof(Approved), "x"); 
     var predicate = Expression.Lambda<Func<Approved, bool>>(
      Expression.Equal(
       Expression.PropertyOrField(param, columnName), 
       Expression.Constant('Y',typeof(char?)) 
      ), param); 
     return db.Approved.Where(predicate).Select(x =>new{x.RefNo, x.RefGroup, x.Location }); 
    } 

が存在しますか?

Answering an earlier questionのためのMarc Gravellに感謝し、これと同じ方法で

答えて

6

これは

return db.Approved.Where(predicate).Select(x =>new Approved{x.RefNo, x.RefGroup, x.Location }); 

を動作するはずselect文は、匿名型

+0

実際にこれを試しましたが、エラーが表示されます。 'System.Collections.IEnumerable'を実装していないため、 'MyApp.Models.Approved'を初期化できません。 – MrBliz

+1

代わりにプロパティ初期化子を使用できます:新しいApproved(){PROPERTYNAME = VALUE、PROP2 = VAL2など...}あなたのApprovedクラスのプロパティ。 – Massif

+0

ソート、ありがとうございました。 – MrBliz

1

は、以下のコードを試してみてください作成しているので、それはそのエラーを与えます。

return db.Approved.Where(predicate).Select(x =>new {x.RefNo, x.RefGroup, x.Location }); 

匿名オブジェクトを作成するとき。

関連する問題