我似乎无法使用这些表获得正确的分组以获得我需要的结果。我有以下linq表达式,它只给我“软件标题”下的最后一项:
List<Inventory> inventoryList = (from u in users
join s in db.software on u.userId equals s.ownerId
select new Inventory { UserId = u.userId, FirstName = u.firstName, LastName = u.lastName, SoftwareTitle = s.title }).ToList();
var currentInventory = inventoryList.GroupBy(i => i.UserId)
.Select(grp => grp.First()).ToList();
这就是我得到的结果:
名字姓氏软件名称
詹姆斯·史密斯的Photoshop
Mike Jones Microft办公室
蒂姆威廉姆斯微软办公室
我需要这样的结果:
名字姓氏软件名称
James Smith Illustrator,Microsoft Office,Photoshop
Mike Jones Visual Studio,Microft Office
Tim Williams Photoshop,Microsoft Office
我无法弄清楚如何在“s.title”上进行连接,这样它就会给我一个以逗号分隔的列表。当我尝试使用string.join(“,”,s.title.ToArray())时,我得到了一个像P,h,o,t,o,s,h,o,p这样的字符数组。
答案 0 :(得分:2)
看起来你想要像
这样的东西constructor(private x: number) {
...super calls, compiler error here
}
但这取决于var currentInventory = (from u in users
join s in db.software on u.UserId equals s.OwnerId
group s.title by u into grp
select grp)
.AsEnumerable()
.Select(grp => new Inventory
{
UserId = grp.Key.userId,
FirstName = grp.Key.firstName,
LastName = grp.Key.lastName,
SoftwareTitle = string.Join(", ", grp)
})
.ToList();
中正确设置分组的项目,我假设它们是因为您似乎正在使用EF表加入它们。这也是我将users
放在那里的原因,因为AsEnumerable
在EF查询中不起作用。