var message = from tbuser in linq.hUsers
                          from tbmes in linq.hMessages
                          where tbmes.HUserIDSend == tbuser.HautoID
                          orderby tbmes.HPubDateTime ascending// descending
                          select new { tbmes.HUserIDSend, tbmes.Hcontent, tbmes.HPubDateTime , tbmes.Hseed,tbuser.Htitle};//Hziwojieshao
            if (message.Count() > 0)
            {
                rpt_list.DataSource = message.ToList();
                rpt_list.DataBind();
            }
huseridsend  hpubdateitme           hseed     htitle
10001 2011-04-26 10:18:30.000 0 zwb
10001 2011-04-26 11:18:43.000 0 zwb
10002 2011-04-26 12:18:43.000 0 xiaoxiao1
10001 2011-04-26 15:18:43.000 0 zwb
10001 2011-04-26 15:18:43.000 0 zwb
10002 2011-04-26 16:18:43.000 0 xiaoxiao1
10001 2011-04-27 09:05:04.187 0 zwb
10001 2011-04-27 09:07:04.000 0 zwb
10001 2011-04-27 09:07:04.297 0 zwb
想根据HUserIDSend分组然后取每组第一行怎么写哦

解决方案 »

  1.   

    你想对现有的message操作还是新写一个查询?
      

  2.   

    var message = from tbuser in linq.hUsers
      join tbmes in linq.hMessages
      on tbmes.HUserIDSend equals tbuser.HautoID
      orderby tbmes.HPubDateTime ascending// descending
      select new { tbmes.HUserIDSend, tbmes.Hcontent, tbmes.HPubDateTime , tbmes.Hseed,tbuser.Htitle};//Hziwojieshao
    var query=from m in message
              group m by m.HUserIDSend into g
              select g.First();
               
      

  3.   

    查询,on tbmes.HUserIDSend equals tbuser.HautoID
    这句出错啊
      

  4.   

    huseridsend hpubdateitme hseed htitle
    10001 2011-04-26 10:18:30.000 0 zwb
    10001 2011-04-26 11:18:43.000 0 zwb
    10002 2011-04-26 12:18:43.000 0 xiaoxiao1
    10001 2011-04-26 15:18:43.000 0 zwb
    10001 2011-04-26 15:18:43.000 0 zwb
    10002 2011-04-26 16:18:43.000 0 xiaoxiao110001 2011-04-27 09:05:04.187 0 zwb
    10001 2011-04-27 09:07:04.000 0 zwb
    10001 2011-04-27 09:07:04.297 0 zwb
    想根据HUserIDSend分组取出最新的数据
      

  5.   

    你是怎么写的?
    看到我写的是用join了么
      

  6.   

    您的代码我整个粘贴上的,on tbmes.HUserIDSend equals tbuser.HautoID
    编译不过去
      

  7.   

    在你的 原来基础上 进行分组,排序再输出。 var message =(from tbuser in linq.hUsers
                   from tbmes in linq.hMessages
                   where tbmes.HUserIDSend == tbuser.HautoID
                   select new { 
                             tbmes.HUserIDSend, 
                             tbmes.Hcontent, 
                             tbmes.HPubDateTime, 
                             tbmes.Hseed, 
                             tbuser.Htitle }
                  ).GroupBy(g => g.HUserIDSend)
                   .Select(s => s.OrderByDescending(o => o.HPubDateTime)
                                 .FirstOrDefault());
      

  8.   

    好用可是为什么第一列多了test列,值都为1,不知道是怎么出来的