gpt4 book ai didi

linq - 如何编写LINQ查询以将多行合并为一行?

转载 作者:行者123 更新时间:2023-12-03 19:02:55 25 4
gpt4 key购买 nike

我有一个带有ID和时间戳的表“ a”。另一个表“ b”具有N个引用id的多行,每行具有“类型”和“一些其他数据”。

我希望LINQ查询产生具有id,时间戳和“其他数据” x N的单行。像这样:


1 | 4671 | 46.5 | 56.5


其中46.5来自“ b”的一行,而56.5来自另一行;两者具有相同的ID。

我在SQLite中有一个有效的查询,但是我是LINQ的新手。我不知道从哪里开始-我根本不认为这是一个JOIN。


SELECT
a.id as id,
a.seconds,
COALESCE(
(SELECT b.some_data FROM
b WHERE
b.id=a.id AND b.type=1), '') AS 'data_one',
COALESCE(
(SELECT b.some_data FROM
b WHERE
b.id=a.id AND b.type=2), '') AS 'data_two'

FROM a first
WHERE first.id=1
GROUP BY first.ID

最佳答案

您没有提到是在使用Linq到sql还是使用linq到实体。但是以下查询应该使您到达那里

(from x in a
join y in b on x.id equals y.id
select new{x.id, x.seconds, y.some_data, y.type}).GroupBy(x=>new{x.id,x.seconds}).
Select(x=>new{
id = x.key.id,
seconds = x.Key.seconds,
data_one = x.Where(z=>z.type == 1).Select(g=>g.some_data).FirstOrDefault(),
data_two = x.Where(z=>z.type == 2).Select(g=>g.some_data).FirstOrDefault()
});


显然,您必须根据基础提供程序为表名加上datacontext或Objectcontext前缀。

关于linq - 如何编写LINQ查询以将多行合并为一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9432227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com