C# 在Linq select中返回非聚合和聚合
尝试将基本SQL查询转换为Linq 骨料返回良好,但非骨料返回良好 系列ID、数量和交易数量都是完美的 代码和Isin不会导致错误,但它们返回的是类型而不是数据 我试图转换的查询:C# 在Linq select中返回非聚合和聚合,c#,asp.net,linq,core,C#,Asp.net,Linq,Core,尝试将基本SQL查询转换为Linq 骨料返回良好,但非骨料返回良好 系列ID、数量和交易数量都是完美的 代码和Isin不会导致错误,但它们返回的是类型而不是数据 我试图转换的查询: SELECT trans_series.id, trans_series.number, trans_series.isin, SUM( trans_trades.amount ), COUNT( trans.series_id ) FROM trans_trades
SELECT
trans_series.id,
trans_series.number,
trans_series.isin,
SUM( trans_trades.amount ),
COUNT( trans.series_id )
FROM
trans_trades
INNER JOIN trans_series ON trans_series.id = trans_trades.series_id
WHERE
trans_trades.series_id IN (
17,
18)
AND trans_trades.first_party_id IS NULL
AND trans_trades.status <> 'closed'
AND trans_trades.status <> 'cancelled'
GROUP BY trans_trades.series_id
我期望从number和isin列中得到实际不同的varchar值,但我在Razor页面的cs Onget中得到了这种类型的数据:
您需要的是:
Code = g.First().tts.Number,
Isin = g.First()ts.Isin,
原因是在g.Selecti=>i.tts.Number中,您选择了一个值列表。
也许列表中只有一个值,但C仍然可以看到一个列表。
数组的ToString方法继承自对象类。因此它会打印类型名称。通过将Isin和代码更改为以下内容,解决了此问题:
Code = g.Select(i => i.ts.Number).Distinct().First(),
Isin = g.Select(i => i.ts.Isin).Distinct().First(),
Code = g.First().tts.Number,
Isin = g.First()ts.Isin,
Code = g.Select(i => i.ts.Number).Distinct().First(),
Isin = g.Select(i => i.ts.Isin).Distinct().First(),