私はデータベースから結果を返す次のコードを持っています。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に感謝し、これと同じ方法で
実際にこれを試しましたが、エラーが表示されます。 'System.Collections.IEnumerable'を実装していないため、 'MyApp.Models.Approved'を初期化できません。 – MrBliz
代わりにプロパティ初期化子を使用できます:新しいApproved(){PROPERTYNAME = VALUE、PROP2 = VAL2など...}あなたのApprovedクラスのプロパティ。 – Massif
ソート、ありがとうございました。 – MrBliz