0

EntityFramework5でリポジトリと作業単位のパターンを使用しています

すべての「エージェンシー」とその「車」を取得したいのですが、リストにパラメーターによって送信されたIDを持ち、パラメーターによって送信された状態に属する車のみを取得します。

例えば

public IEnumerable<Agency> GetList(int stateId, string idCarList)

var ids = idTiposTarjetasList.Split(',');
var intIds = ids.Select(int.Parse);

で、〜がある

Uow.Agencies.GetAll()

Uow.Agencies.GetAllIncluding(a => a.Cars)

IQueryable<T>を取得します

とにかく、1つのクエリでCarsを含むエージェンシーを取得できますが、intIdsリストに含まれるIDとstateIdパラメーターに一致するstateIdを持つエージェンシーのみを取得できますか?

私はすでにこのStackoverflowの質問を見てきましたが、IQueryableを取得すると、それを機能させるのに苦労します。

この変数sortedList=from xをUow.Agencies.GetAllInclusive(c => c.Cars)に書き込むと、選択を実行できません(クエリから引数を推測できないと言います)

これは機能しません:

var ids = idCars.Split(',');
var intIds = ids.Select(int.Parse);

var agencies =  from agency in
                Uow.Agencies.GetAllIncluding(c => c.Cars).Where(c => intIds.Contains(c.Cars.Id)).OrderBy(s => s.Id)
                 select agency;

if (agencies.Any())
{
    return agencies;
}

どうすればいいですか?ありがとう!ギレルモ。

4

1 に答える 1

0

部分的にロードされたコレクションを持つオブジェクトをフェッチすることはできません(少なくとも、1つのステートメントではフェッチできません)。agentしたがって、オブジェクトと選択した車を別々に含むタイプを作成する必要があります。

var agencies =  from agency in Uow.Agencies.GetAll()
                select new { Agency = agency,
                             Cars = agency.Cars.Where(c => intIds.Contains(c.Id))
                           };
于 2012-11-20T22:48:49.027 に答える