1

これがLinqで可能かどうか疑問に思っていました:3つのテーブルがあります:

Request
--id
--Adress
--Description
Nav.Properties:
-- RequestStatus

RequestStatus
--RequestId
--PubDate
--StatusTypeId
Nav.Properties:
-- Request
-- StatusType

StatusType
--Id
--StatusTypeDescription
Nav.Properties
-- RequestStatus

Linq では、最初の 2 つのテーブルを結合することができます。

var RequestWithStatus = dbContext.Requests.Include("RequestStatus").ToList<fullRequest>();

しかし...私がしたいのは、このクエリにも含まれるStatusTypeDescription列です(したがって、3番目のテーブルで結合を使用します)。

4

1 に答える 1

0

Requestインスタンスが1つのRequestStatusを持つことができ、RequestStatusインスタンスが1つのStatusTypeを持つことができる場合は、次のようにすることができます。

var requestList = dbContext.Requests.Include("RequestStatus.StatusType").ToList();

Include(System.Data.Entity内)の「ラムダ」(Expression>)オーバーロードもあります(mysqlで機能するかどうかはわかりません)

var requestList = dbContext.Requests.Include(m => m.RequestStatus.StatusType).ToList();

すべてのデータがリストに表示されます(積極的な読み込み)。

次に、説明にアクセスできます

var firstRequest = requestList.First();
var requestDescription = firstRequest.Description;
var statusTypeDescription = firstRequest.RequestStatus.StatusType.Description;

またはより安全

var statusTypeDescription = firstRequest.RequestStatus != null && firstRequest.RequestStatus.StatusType != null 
          ? firstRequest.RequestStatus.StatusType.Description
          : string.Empty;
于 2013-02-07T10:27:53.687 に答える