2

私はすべてのコンサルタントで記入するドロップダウンリストを持っています。

これは、このLINQクエリに使用しているエンティティです。

ここに画像の説明を入力してください

私がやりたいのは、Complete_dateが設定されたゴールカードを持つすべてのコンサルタントIDを取得することです。私はこれを行う方法がわかりません。

現在、すべてのコンサルタントIDを取得するための次のLINQクエリがあります。

public List<Consultant> GetAllConsultantsByID()
{
    var allConsultants = from id in db.Consultant
                         select id;
    return allConsultants.ToList();
}

どんな種類の助けもありがたいです

前もって感謝します

アップデート:

これは、GetActionメソッドでLinqメソッドを使用する方法です。

var consultants = repository.GetAllConsultantsByID();
model.Consultants = new SelectList(consultants, "Id", "Name");
4

2 に答える 2

3

Consultant.GoalCardナビゲーション プロパティとAny拡張メソッドを使用できます。

var query = from con in db.Consultant
            where con.GoalCard.Any(card => card.Completed_Date != null)
            select con;
return query.ToList();

Consultant.GoalcardGoalCardsすべてをConsultantクエリ可能なプロパティとして公開します。したがって、それに対してクエリを実行することもできます。Completed_Date(この例では、null 可能であると想定しています)

注:Consultantが複数の を持つことができるので、のナビゲーション プロパティのGoalCard名前を に変更することをお勧めします(複数存在できることを明確にするため)。ConsultantGoalCardGoalCards

于 2012-06-01T08:43:47.693 に答える
1

Complete_Dateが typeであると仮定すると、次のDateTime?ように実行できます。

public IEnumerable<Consultant> GetConsultantIds()
{
     return db.Consultant.Where(c => c.GoalCard != null && c.GoalCard.Completed_Date.HasValue).Select(c => c.Id).AsEnumerable(); 
}

[編集]

はコレクションなのでGoalCard(誤解を招く名前 :) )、そのようなことを実行して、いずれかのカードに少なくとも 1 つの完了日が設定されているコンサルタントの ID を取得できます。

public IEnumerable<int> GetConsultantIds()
{
     return db.Consultant.Where(c => c.GoalCard != null && c.GoalCard.Any(card => card.Completed_Date.HasValue)).Select(c => c.Id).AsEnumerable(); 
}

これは、ID のリストのみでありConsultant、基準を満たすオブジェクトのリストです。

public IEnumerable<Consultant> GetConsultantIds()
{
     return db.Consultant.Where(c => c.GoalCard != null && c.GoalCard.Any(card => card.Completed_Date.HasValue)).AsEnumerable(); 
}
于 2012-06-01T08:43:35.207 に答える