0

ランバで助けてくれないでください

I have two tables. 
Employees:   
pk           
name        

ExpenseTeamMembers: 
pk                        
expMgrPk
empPk

Example: pk      expMgrPk     empPk     
     1         7          81
     2         7          101
     3         13         99
     4         13         22
     5         13         56

基本的に、最初のテーブルは従業員のリストであり、2番目のテーブルはどの従業員がどのマネージャーに属しているかを追跡するためのテーブルです。

最初のSQLルックアップが機能し、mgrはコンボボックスで選択した名前のpkを取得しています。

結合で私が行おうとしているのは、expMgrPkを検索し、それに属する従業員を確認して、pkの代わりに名前を返すことです。私はかなり離れていて、少し助けが必要です。もう一度ランバで助けてくれないでください!! ありがとう

    private void cboManagers_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (cboManagers != null)
        {
            string selectedMgr = (string)cboManagers.SelectedValue;

            using (DataClasses1DataContext db = new DataClasses1DataContext())
            {
                int mgr = (from f in db.employees
                          where f.name == selectedMgr
                          select f.pk).FirstOrDefault();

                var emps = (from m in db.employees
                            join t in db.expenseTeamMembers on m.pk equals t.pK
                            where t.expMgrPk == mgr
                            select m.name).ToList();
                lstSelected.DataSource = emps;
            }
        }
    }
4

1 に答える 1

1

fromlinq-to-sqlでは、ステートメントと組み合わせた2つのステートメントを記述することで、結合をより簡単に記述できますwhere。このようなもの:

var emps = (from f in db.employees
            from m in db.expenseTeamMembers
            where m.pk == mgr && f.pk == m.empPk
            select f.name).ToList();

この構文の方が簡単で、コードをコンパイルすると、クエリが従来のT-SQL結合に変換されることがわかりました。

于 2012-07-23T01:40:49.547 に答える