2011-02-04 7 views
1

私は巨大な列を持つテーブルを持っています。これらの列にマップされたプロパティを塗りつぶすことなくエンティティを選択する方法は?特定の列をフィルタリングしている間にエンティティを取得する方法

私は1つのアイデアを持っていますが、私はそれが正しいアプローチだかはわからない:

ctx.Items.Where(....).Select(a=> new Item { ... bind only needed columns }).ToList() 

は、これらのエンティティをDataContextのに添付されますか?

答えて

2

Item以外のタイプを使用してください。たとえば、匿名タイプまたはDTO。次に、あなたのクエリはあなたが望むものを正確に行います。

2

あなたは正しい方法をとっています。これは、プリファードされた列/プロパティだけでオブジェクトをインスタンス化する方法です。 this postをご覧ください。

EDIT:これはジュリーラーマンからのものであり、この質問に頼まれているものである

は、私は信じている:LINQのメソッドベース クエリ構文を使用して プロジェクトにLINQクエリメソッドと

予測は、あなたがSelect メソッドを使用して、そのパラメータに含めるプロパティーを で指定します。 メソッドベースのクエリ構文では、 ラムダで匿名の 型を作成する構文が必要です(例4-4を参照)。

例4-4。

context.Contacts .Where(C => c.FirstNameは "ロバート" ==)LINQの メソッドベースの構文を使用して、突出.Select(C => 新しい{c.Title、c.LastName、 C .FirstName})

+0

実行時にクエリが失敗します。それを試してみてください。 –

+0

なぜそれがクレイグに失敗するのですか?そして、何が解決策になるでしょうか?もしドミトリーがこれを読んだら。 –

+0

エンティティタイプに投影することが許可されていないため、失敗します。私が言ったように:試してみてください。エラーメッセージは十分にクリアです。私はすでに私の答えに答えを出しました。 –

関連する問題