在asp net linq中读取特定用户的组名

时间:2017-03-09 08:04:07

标签: c# asp.net sql-server linq ado.net

我的DataSet Visitors VisitorGroupIDNULL可以是private DataSet _groups; var results = _groups.Tables[0].AsEnumerable() .GroupBy(x => x["GroupName"]).Select(g => g.First()) .Where(x => !string.IsNullOrEmpty(x["GroupName"].ToString())) .CopyToDataTable(); ,或者具有引用另一个名为VisitorGroups的表的值。我想在我的页面中阅读特定访问者的GroupName(列属于VisitorGroups),我的查询应该如何?

这就是我现在所做的,但这会返回所有存在错误的组。

C#:

frmEmployeeManage em = null;
private void ShowEmployee_Click(object sender, EventArgs e)
    {

        if (em == null || em.IsDisposed)
        {
            em = new frmEmployeeManage();
            em.MdiParent = this;
            em.FormBorderStyle = FormBorderStyle.None;
            em.WindowState = FormWindowState.Maximized;
            em.Show();
        }
        else
        {
            em.Activate();
        }
    }

1 个答案:

答案 0 :(得分:1)

选择id == 1的用户组的示例:

            _groups = new DataSet();
            _groups.Tables.Add(new DataTable("users"));
            _groups.Tables.Add(new DataTable("groups"));    

                _groups.Tables[0].Columns.Add("id_user", typeof(int));
                _groups.Tables[0].Columns.Add("user_name");
                _groups.Tables[0].Columns.Add("id_group", typeof(int));
                _groups.Tables[1].Columns.Add("id_group", typeof(int));
                _groups.Tables[1].Columns.Add("group_name");
                _groups.Tables[0].Rows.Add(1, "Nom1", 1);
                _groups.Tables[0].Rows.Add(2, "Nom2", 2);
                _groups.Tables[0].Rows.Add(3, "Nom3", null);
                _groups.Tables[1].Rows.Add(1, "Group1");
                _groups.Tables[1].Rows.Add(2, "Group2");
                Console.WriteLine(_groups.GetXml());

                var result = _groups.Tables[0].AsEnumerable()
                    .Where(user => user.Field<int>("id_user") == 1)
                    .Join(_groups.Tables[1].AsEnumerable(), user => user.Field<int?>("id_group"), group => group.Field<int>("id_group"), (user, group) => new { id_user = user.Field<int>("id_user"), group_name = group.Field<string>("group_name") }).First();

                Console.WriteLine(result.group_name);

                var result2 = _groups.Tables[0].AsEnumerable()
                    .Where(user => user.Field<int>("id_user") == 3)
                    .Join(_groups.Tables[1].AsEnumerable(), user => user.Field<int?>("id_group"), group => group.Field<int>("id_group"), (user, group) => new { id_user = user.Field<int>("id_user"), group_name = group.Field<string>("group_name") }).FirstOrDefault();

                Console.WriteLine(result2 != null? result2.group_name:null);

                Console.ReadLine();