0

ゲートとこれらのゲートの可用性を管理する必要があるとしましょう。

これが私のモデルです:

public class Gate
{
    public int GateID { get; set; }
    public string GateName { get; set; }
}

public class GateNA  ---> NA: NotAvailable
{
    public int GateNAID { get; set; }
    public int GateID { get; set; }
    public DateTime Date { get; set; }
}

ここで、次のサンプル データがあるとします。

ゲートの場合:

GateID: 1 GateName: "San Antonio Gate"

GateID: 2 GateName: "Santa Fe Gate"

GateID: 3 GateName: 「サンタ・マリア・ゲート」

これらのゲートは、特定の日付では利用できません (>> GateNA クラス):

GateIDNA: 1 GateID: 2 日付: 2012/06/01

GateIDNA: 2 GateID: 1 日付: 2012/08/08

次のように、「Santa」で始まるすべてのゲートを取得できます。

var gateRepository = unitOfWork.Create<Gate>();
var gates = gateRepository.Find(m => m.GateName.Contains("Santa"));

私の質問は、「Santa」で始まり、2012/06/01 から 2012/06/05 の間に利用可能なすべてのゲートを取得するにはどうすればよいかということです。それで、GateNA をチェックインする必要があります...

ここでは、結果は GateID 3 という 1 つの要素だけになるはずです。

何か案が?

ありがとう。

4

2 に答える 2

1

GateNA最も簡単な解決策は、コレクションのナビゲーション プロパティをGateエンティティに追加し、それをクエリで使用することです。

gateRepository.Find(m => m.GateName.Contains("Santa") && 
                         !m.GateNAs.Any(g => g.Date == selectedDate));

プロパティを追加しない場合は、LINQ クエリで手動結合を実行する必要があります。

于 2012-05-28T11:09:32.020 に答える
0

クラスを次のように再構築してみませんか。

public class Gate
{
    public int GateID { get; set; }
    public string GateName { get; set; }
    public List<GateNA> NotAvailableDates { get; set; }
}

public class GateNA  ---> NA: NotAvailable
{
    public int GateNAID { get; set; }
    public int GateID { get; set; }
    public DateTime Date { get; set; }
}

それから

var gates = gateRepository.Find(
    m => m.GateName.Contains("Santa") && 
   (m.NotAvailableDates.Find(
        d => d.Date==new DateTime(2012,06,01)
   )==null
);
于 2012-05-28T11:05:15.547 に答える