-1

これを行いたいのですが、except 演算子を使用したい場合は機能しません。

この投稿の複製:(1つのフィールドなしでエンティティフレームワークからオブジェクトを取得します

そしてこれ:Entity Framework 4とCode-Firstを使用してデータベースからフィールド/プロパティを除外します

using (var db = new DEntities())
{
    var ticket = db.Tickets
        .Include(o => o.Ticket)
        .Except(o => o.AttachmentFile)
        .Where(o => o.TicketID == ticketID).ToList();
}

なしですべてのテーブルを取得したいAttachmentFile

4

2 に答える 2

7

Exceptはセット減算演算子です。元のセットと同じ種類の要素を指定して、元のExceptセットからセットのすべての要素を削除するように要求するために使用します。

これはここで達成しようとしていることではありません - あなたのタスクは単純なフィルタリングのようです:

ticket = db.Tickets
    .Include(o => o.Ticket)
    .Where(o => o.AttachmentFile == null && o.TicketID == ticketID)
    .ToList();

を にする必要があるため、添付ファイルのあるすべてのチケットが除外さAttachmentFileれますnull

(コメント) nullの場合は取得したくないo.attachmentFileを無視したいだけです。

それは異なります: EF は個々のプロパティの遅延読み込みをサポートしていないため、添付ファイルが独自のテーブルに分割されていない限り (添付ファイルなしでチケットをクエリすることが多い場合は、これを行うことをお勧めします)、取得するフィールドのみを選択する必要があります。

ticket = db.Tickets
    .Include(o => o.Ticket)
    .Where(o => o.TicketID == ticketID)
    .Select(o => new MyObject(o.Attr1, o.Attr2, /*and so on, but no AttachmentFile */))
    .ToList();
于 2013-08-13T20:34:33.040 に答える
3

select ステートメントを使用できます。

    var ticket = db.Tickets
                   .Include(o => o.Ticket)
                   .Where(o => o.TicketID == ticketID)
                   .Select( o => new { o.TicketID, o.Column1, o.Column2 }).ToList();

o.Column1、o.Column2 などを適切な列名に置き換えます。これは、指定された列を含む匿名オブジェクトを返します。

于 2013-08-13T20:41:05.573 に答える