0

従業員テーブルがあり、現在、そのテーブルの名前をコンボ ボックスに入力しています。また、従業員の pk を含む expendHdr という関連テーブルもあります。私のテーブル構造は次のようになります。

employees     expenseHdr
empPk         expPk
name          expenseType
              empPk

現在、名前をフィルタリングしていますが、expenseHdr にある各レコードの名前を繰り返しています。各名前を一度だけ表示するにはどうすればよいですか? ありがとう!

var emps = (from emp in db.employees
                        join exp in db.expenseHdrs on emp.pk equals exp.empPk
                        where emp.active == true 
                        orderby emp.name
                        select emp.name.Substring(0, 20)).ToList();
            cboEmployee.DataSource = emps;
4

1 に答える 1

2

使用できますAny()

var emps = (from emp in db.employees
                        where emp.active && emp.expenseHdrs.Any()
                        orderby emp.name
                        select emp.name.Substring(0, 20)).ToList();
            cboEmployee.DataSource = emps;

テーブル間に db リレーションがない場合は、代わりに次のように記述します。

where emp.active && db.expenseHdrs.Any(exp => emp.pk == exp.empPk)
于 2012-05-05T16:59:40.630 に答える