2017-03-09 24 views
0

特定的用戶我有Visitors有一列VisitorGroupID,它們可以是NULL或有指稱爲VisitorGroups另一個表這就是一個值的這個DataSet。我想閱讀頁面中特定訪問者的GroupName(列屬於VisitorGroups),我的查詢應該如何?閱讀組名在ASP淨LINQ

這是我現在所做的,但是這會返回所有存在的錯誤組。

C#:

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(); 
+0

你應該看看數據集中的遊客選擇訪客,具有連接查詢(包含在鏈接中)在visitoregroups表上。 –

+0

@StephaneDuteriez你可以創建一個帖子並解釋你的意思嗎? – Malphai

回答

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();