复合查询SQL语句在linq怎么实现呢?

sosoben 2015-06-08 07:12:50
"select * from (SELECT * FROM temp.CSV where [F1] & '-' & [F3] IN (SELECT [F1] & '-' & max(F3) AS 条件 FROM temp.csv GROUP BY [F1]))

这样的sql怎么写成linq呢?

现已读出一个 datatable dt = temp.Csv,接下来应该怎么写呢??

Dim query0 = From row In dt.AsEnumerable() _
Group By time1 = row("F1") _
Into SandT = Group, Max()

?????
...全文
331 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
遥望那些年 2015-06-09
  • 打赏
  • 举报
回复
话说你最外层的那句select * from根本不需要的
遥望那些年 2015-06-09
  • 打赏
  • 举报
回复
给你写了个sql,你可以根据ID,time分组,然后求出result为true的记录的pos的和。根据你的需求,你只需要分组后pos和为10的记录(1+2+3+4=10)
sosoben 2015-06-09
  • 打赏
  • 举报
回复
引用 5 楼 gxttr 的回复:
[quote=引用 4 楼 sosoben 的回复:] [quote=引用 2 楼 gxttr 的回复:] 话说你最外层的那句select * from根本不需要的
的确是不需要,手误打多了 很厉害啊,双语广播都有了 但有个不明白 Function(g) g.Key 为什么能等效于[F1] 呢??[/quote] 因为之前group by的时候是根据[F1]group by的。所以key值就是[F1][/quote] 牛啊!,有空看看这题吗? 还没结贴 如果linq效率更高我也会考虑哦 http://bbs.csdn.net/topics/391048992
遥望那些年 2015-06-09
  • 打赏
  • 举报
回复
引用 4 楼 sosoben 的回复:
[quote=引用 2 楼 gxttr 的回复:] 话说你最外层的那句select * from根本不需要的
的确是不需要,手误打多了 很厉害啊,双语广播都有了 但有个不明白 Function(g) g.Key 为什么能等效于[F1] 呢??[/quote] 因为之前group by的时候是根据[F1]group by的。所以key值就是[F1]
sosoben 2015-06-09
  • 打赏
  • 举报
回复
引用 2 楼 gxttr 的回复:
话说你最外层的那句select * from根本不需要的
的确是不需要,手误打多了 很厉害啊,双语广播都有了 但有个不明白 Function(g) g.Key 为什么能等效于[F1] 呢??
lili20090907 2015-06-09
  • 打赏
  • 举报
回复
二楼C#代码应该可以满足你 C#代码如下

            var result = dt.AsEnumerable().
                Where(r => (dt.AsEnumerable().
                    GroupBy(sr => sr["F1"]).
                    Select(g => g.Key + "-" + g.Max(sr => sr["F3"]))).ToList().IndexOf(r["F1"] + "-" + r["F3"]) >= 0).
                ToList();
[/quote]
遥望那些年 2015-06-08
  • 打赏
  • 举报
回复
VB.Net代码如下

        Dim result = dt.AsEnumerable().
            Where(Function(r) dt.AsEnumerable().
                      GroupBy(Function(sr) sr.Item("F1")).
                      Select(Function(g) g.Key & "-" & g.Max(Function(sr) sr.Item("F3"))).ToList().IndexOf(r.Item("F1") & "-" & r.Item("F3")) >= 0).
            ToList()
C#代码如下

            var result = dt.AsEnumerable().
                Where(r => (dt.AsEnumerable().
                    GroupBy(sr => sr["F1"]).
                    Select(g => g.Key + "-" + g.Max(sr => sr["F3"]))).ToList().IndexOf(r["F1"] + "-" + r["F3"]) >= 0).
                ToList();

8,494

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧