1

linq を使用して多対多の関係でデータを取得する際に問題があります。

私は3つのテーブルを持っています

  • Employee
  • role
  • RoleInemployee

3 番目のテーブルには、次の 2 つの列がempidあります。roleid

従業員を複数のロールに割り当てることができ、3 番目のテーブルに格納するか、複数の従業員に単一のロールを割り当てることができます。

linq を使用して特定のロール ID を持つ従業員を取得したいだけです。

次のような従業員モデルでナビゲーション プロパティを使用しています

public virtual ICollection<Role> role {get;set;} 

このナビゲーション プロパティは特定の従業員の役割を与えてくれますが、特定の役割が割り当てられている従業員のデータを取得したいと考えています。

どんな体も助けてくれますか?

4

2 に答える 2

3

Count には述語をパラメーターとして持つオーバーロードがあるため、次のことができます。

   var count =  db.Employees.Count(emp=> emp.role.Any(r=> r.Id == 12));

編集

特定の役割を持つ従業員を獲得する

var employees = db.Employees.Where(emp => emp.role.Any(r => r.Id == 12));
于 2013-01-23T16:41:28.870 に答える
1

私が質問を正しく理解していれば、LINQ を使用して特定のロール ID に設定された従業員数を取得したいと考えています。

エンティティ フレームワークの Employee クラスにロールのリストが含まれている場合、従業員のリストを使用して次の操作を実行できます。ここで、123 は探している RoleID です。

employeeList.Where(x => x.Roles.Where(y => y.RoleID == 123)).Count();

編集: RoleInEmployee コードを削除しました

于 2013-01-23T16:40:38.313 に答える