是否可以将我的SQL查询转换为LINQ? [英] Is it possible to translate my SQL query to LINQ?

查看:57
本文介绍了是否可以将我的SQL查询转换为LINQ?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨!我是LINQ C#的新手。是否可以将我的SQL查询翻译成LINQ?

有人可以帮帮我吗?





Hi! I'm a newbie to LINQ C#. Is it possible to translate my SQL query to LINQ?
Can anyone help me, please?


select Max(a.CreatedDate), Max(b.ModifiedDate), Count(*) from TableA AS a join TableB AS b on a.Id = b.Id where a.UserId = 1;







a.) TableA 
- UserID (PK, int, not null, (but NOT UNIQUE))
- Id (PK,FK, unique)
- CreatedDate (not null)

b.) TableB 
- Id (PK, unique)
- ModifiedDate (null)

There is foreign key on TableA.Id -> TableB.Id
And the last condition is that TableA.UserId = 1







我在查询结果中需要COUNT行,MAX CreatedDate和MAX ModifiedDate。



我的尝试:



------------ -------------------------------------------------- ----------------------

C#

我试过了:






I need COUNT of rows in result of that query, MAX CreatedDate and MAX ModifiedDate.

What I have tried:

------------------------------------------------------------------------------------
C#
I've tried:

var result = (from b in TabeleB
              join a in TableA on a.Id equals b.Id
              where (a.UserId == 1)
              select new { a.CreatedDate, b.ModifiedDate })
              .ToList();

var maxModifiedDate = result.Max(x=> x.ModifiedDate);
var maxCreatedDate = result.Max(x=> x.CreatedDate);
var count = result.Count();





但是我不需要整个列表,只需要三个值...

我需要LINQ查询得到MAX值为1,MAX为value2,COUNT为结果行



你能帮助我吗?



But I don't need whole list, just three values...
I need LINQ query getting MAX of value1, MAX of value2, COUNT of resulted rows

Could you help me?

推荐答案

你走在正确的轨道上!



首先看,你必须分组数据...

参见:如何:执行分组连接(C#编程指南) [ ^ ]



You're on the right track!

On the first look, you have to group data...
See: How to: Perform Grouped Joins (C# Programming Guide)[^]

var query = from a in TableA.Where(u=>u.UserId==1)
            join b in TableB on a.Id equals b.Id into grp
            select new
                {
                    MaxOfCreated = grp.Max(z=>z.CreatedDate),
                    MaxOfModified = grp.Max(x=>x.ModifiedDate),
                    Count = grp.Count()
                };





注意#1:我不知道看到你的数据,所以...我的查询可能不符合你的要求...

注2:我建议下载 LinqPad [ ^ ],这在过程中非常有用从sql到Linq的查询翻译。这是免费工具;)



详情请见:

C#中的101个LINQ样本 [ ^ ]



Note #1: I do not see your data, so... my query may not meet your requirements...
Note #2: I'd suggest to download LinqPad[^], which is very useful in process of query translation from sql to Linq. It's free tool ;)

For further details, please see:
101 LINQ Samples in C#[^]


这篇关于是否可以将我的SQL查询转换为LINQ?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆