我的DataSet
Visitors
VisitorGroupID
列NULL
可以是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();
}
}
答案 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();