首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按ID分组并使用Linq显示顶部1

按ID分组并使用Linq显示顶部1
EN

Stack Overflow用户
提问于 2014-09-25 20:50:32
回答 2查看 120关注 0票数 0

寻找一些关于与实体框架和linq分组的建议。

因此,我有一个表"tbl_ChatLog“,其中包含了userID和sendToUserID etc...and的数据,我试图显示每个"SendToUserID”中的“顶级1”

所以在我的UI中,它看起来是这样的:

  • 1001 (包含多个,但显示前1)
  • 1003 (包含多个,但显示前1)
  • 1008 (包含多个,但显示前1)
  • 1009 (包含多个,但显示前1)

下面代码的开始:

代码语言:javascript
运行
复制
public static List<Chat> getChatMessage() 
        {
            var entities = new FreeEntities();
            //My ID
            Business.User user = Business.User.getUserBySecurityToken();

             List<Chat> chatMessages = 
             (
                from cm in entities.tbl_ChatLog 
                where cm.UserID == user.uid 
                select new Chat 
                { 
                   uid = (int)cm.UserID, 
                   sendToUserID = (int)cm.SendToUserID, 
                   message = cm.Message, dateAdded = (DateTime)cm.DateAdded 
                }
             ).OrderByDescending(x => x.dateAdded).ToList();
            return chatMessages;
        }

希望你能帮我解决这件事。分组似乎总是把我甩了。

非常感谢,

泰瑞

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-04 10:24:07

你可以用groupby

代码语言:javascript
运行
复制
List<Chat> chatMessages =

(from cm in entities.tbl_ChatLog 

where cm.UserID == user.uid 

orderby cm.DateAdded descending

group cm by cm.sendToUserID into grp

select new Chat
{ 

uid = grp.FirstOrDefault().UserID,

sendToUserID = grp.Key, 

message = grp.FirstOrDefault().Message,

dateAdded = grp.FirstOrDefault().DateAdded

}).ToList()

这将为您提供按sendToUserID分组的表数据列表,以及包含每个属性(包括sendToUserID )的每个组的第一个条目。

票数 0
EN

Stack Overflow用户

发布于 2014-10-05 17:04:15

最初的问题是尝试从每个唯一的"SendToUserId“中选择第一条消息,然后按UserId进行分组,然后选择DTO是一场噩梦,但我设法完成了一项简单的工作。代码如下:

代码语言:javascript
运行
复制
getFirstChatMessage() 
    {
        var entities = new FreeEntities();
        //User ID
        Business.User user = Business.User.getUserBySecurityToken();

        // Create new list of Chat
        List<Chat> chatList = new List<Chat>();

          var res = from c in entities.tbl_ChatLog
          where c.UserID == user.uid
          group c by c.UserID
          into groups
          select groups.OrderByDescending(p => p.DateAdded).FirstOrDefault();

        foreach (var r in res) 
        {
          chatList.Add(new Chat() 
          {
           uid = (int)r.UserID, 
           sendToUserID = (int)r.SendToUserID,
           message = (from m in entities.tbl_ChatLog where m.UserID == (int)r.SendToUserID 
           orderby r.DateAdded descending select m.Message).FirstOrDefault(),
           dateAdded = (DateTime)r.DateAdded, 
           fullName = (from b in entities.tbl_Bio where b.UserID == (int)r.SendToUserID 
           select b.FirstName + " " +      b.SurName).FirstOrDefault() 
          });
        }
        return chatList;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26047867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档