标签: sql-to-linq-conversion

Linq联盟用法?

SQL:

SELECT date,total_usage_T1 as TotalUsageValue,'T1' as UsageType FROM TblSayacOkumalari
UNION ALL
SELECT date,total_usage_T2 as TotalUsageValue,'T2' as UsageType FROM TblSayacOkumalari
Run Code Online (Sandbox Code Playgroud)

我尝试将其转换为linq

IEnumerable<TblSayacOkumalari> sayac_okumalari = entity.TblSayacOkumalari
.Select(x => new 
    { x.date, x.total_usage_T1 })
.Union(entity.TblSayacOkumalari.Select(x => new 
    { x.date, x.total_usage_T2 }));
Run Code Online (Sandbox Code Playgroud)

但我不知道如何转换'T1' as UsageType为linq.我的工会使用也是不正确的.

我的表字段如下:

| date | total_usage_T1 | total_usage_T2 |

| 2010 |             30 |             40 |
| 2011 |             40 |             45 |
| 2012 |             35 |             50 |
Run Code Online (Sandbox Code Playgroud)

我想要这样

| date | TotalUsageValue | UsageType     | …
Run Code Online (Sandbox Code Playgroud)

c# sql linq sql-to-linq-conversion

8
推荐指数
2
解决办法
4万
查看次数

如何在LINQ中在单个连接中的多个字段上进行左连接

我正在尝试对LINQ执行这个简单的SQL查询.但它给我错误.

这是需要转换为LINQ的SQL查询

 DECLARE @groupID int
 SET @groupID = 2
 SELECT * 
    FROM dbo.Person p
    LEFT JOIN dbo.PersonGroup pg ON ( p.PersonID = pg.PersonID AND pg.GroupID = @groupID)
Run Code Online (Sandbox Code Playgroud)

忽略@groupID.它将作为LINQ查询的函数参数提供.

这是我试过的LINQ查询.

from p in Person
 join pg in PersonGroup on new { p.PersonID, groupID } equals new { pg.PersonID, pg.GroupID } into t
 from rt in t.DefaultIfEmpty()
Run Code Online (Sandbox Code Playgroud)

其中groupID作为函数参数提供.GroupID和PersonID都是int.但它给了我以下错误,

Error   2   The type of one of the expressions in the join clause is incorrect.  Type inference failed in the call to 'GroupJoin'.
Run Code Online (Sandbox Code Playgroud)

很少的帮助将不胜感激.

c# linq left-join sql-to-linq-conversion

7
推荐指数
1
解决办法
4201
查看次数

将sql转换为linq

我正在尝试在我的酒店预订项目上实施按日期筛选.

有人可以帮我把这个sql代码转换成linq.

SELECT r.*
FROM Room r LEFT JOIN Reservation v ON r.RoomID = v.RoomID
AND NOT (@StartDate >= Date_Check_Out OR @EndDate <= Date_Check_In)
AND v.cancel = 0
WHERE v.ReservationID IS NULL
Run Code Online (Sandbox Code Playgroud)

c# sql linq linq-to-sql sql-to-linq-conversion

5
推荐指数
1
解决办法
2万
查看次数

使用LINQ从数据库中查找附近的位置

我们希望在ASP.NET 2012中使用LINQ从数据库接收附近地点的列表,并希望对我们的策略有一些反馈.


我的表和假数据:

     PlaceId    Name       Latitude   Longitude 
       1          A          18.1        20.1
       2          B          18.2        20.2
       3          C          18.3        20.3
Run Code Online (Sandbox Code Playgroud)

1)在我们的项目中,客户端当前位置(纬度和经度)被视为输入

2)在服务器端,根据客户端的当前位置,我们需要使用LINQ从数据库中查找附近的位置

这是我之前使用的SQL代码,但现在我们想使用LINQ.

SELECT  name, Latitude, Longitude , 
  ( 3959 * acos( cos( radians(?) )* cos( radians( Latitude) ) * cos( radians( Longitude ) - radians(?) ) 
 + sin( radians(?) ) * sin( radians( Latitude) ) ) ) AS distance 
FROM TABLE_NAME 
HAVING distance < ? 
ORDER BY distance LIMIT 0 , 20
Run Code Online (Sandbox Code Playgroud)

[但问题是如何在LINQ中编写这样的查询.]

我的工作:

在搜索解决方案时,我遇到了这段代码

        var Value1 = 57.2957795130823D;
        var …
Run Code Online (Sandbox Code Playgroud)

.net linq asp.net c#-4.0 sql-to-linq-conversion

5
推荐指数
1
解决办法
2817
查看次数

将SQL查询转换为LINQ C#

我有一个SQL查询:

SELECT 
      node.GroupName
    , depth = COUNT(parent.GroupName) - 1
FROM CompanyGroup node
JOIN CompanyGroup parent ON node.LeftID BETWEEN parent.LeftID AND parent.RightID
GROUP BY node.GroupName, node.LeftID
ORDER BY node.LeftID;
Run Code Online (Sandbox Code Playgroud)

我已经尝试过将它转换为LINQ,但是我对语言不熟悉,经过一些研究后我尝试使用Linqer,但它不会转换函数'BETWEEN'或'COUNT'.

我到目前为止最接近的是:

        var groupModel =
            from node in db.CompanyGroups
            join parent in db.CompanyGroups.Where(node.LeftID > parent.LeftID && node.LeftID < parent.RightID)
            orderby node.LeftID
            select node.GroupName;
Run Code Online (Sandbox Code Playgroud)

哪个不起作用,即使它确实也不会返回'深度',请帮忙!

编辑:

该查询用于按顺序返回嵌套集中的节点深度,以便我可以创建层次结构的表示; 我正在关注本教程:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/关于"查找节点深度"一章

.net c# sql linq sql-to-linq-conversion

5
推荐指数
1
解决办法
1114
查看次数

Linq中的SQL LIKE

在添加这个问题之前,我确实在stackoverflow上搜索类似的问题,但我找不到.互联网上的大多数问题都是使用LIKE和一个字符串(例如LIKE'%ABC%'),但我需要与另一个表的现有列进行比较.

我需要为select语句编写一个linq查询,如下所示 -

 select * 
from [dbo].[BaseClaim]
where WPId like (select WPId from UserProfiles where ID='1459') 
Run Code Online (Sandbox Code Playgroud)

我提出了下面的linq查询,但它没有按预期工作 -

     var result = (from claimsRow in context.BaseClaims
                          where (from upRow in context.UserProfiles
                                 where upRow.ID == 1459
                                 select upRow.WPId).Contains(claimsRow.WPId)
                          select claimsRow);
Run Code Online (Sandbox Code Playgroud)

以上linq生成的sql如下 -

   SELECT 
   [Extent1].[WPId] AS [WPId]
   FROM [dbo].[BaseClaim] AS [Extent1]
   WHERE  EXISTS (SELECT 
             1 AS [C1]
                 FROM (SELECT 
                       [UserProfiles].[ID] AS [ID], 
                       [UserProfiles].[WPId] AS [WPId]      
                       FROM [dbo].[UserProfiles] AS [UserProfiles]) AS [Extent2]
                   WHERE (1459 = [Extent2].[ID]) AND ([Extent2].[WPId] = [Extent1].[WPId]))
Run Code Online (Sandbox Code Playgroud)

很明显,我的linq不能将baseclaim.wpID与userprofiles.wpid进行比较而不是LIKE.

.net c# t-sql linq sql-to-linq-conversion

5
推荐指数
1
解决办法
2万
查看次数

在运行时将 SQL 转换为 Linq To Objects 表达式

有谁知道有什么库可以用来解析 SQL 查询并构建 linq 表达式,然后可以对 linq to 对象进行编译和使用吗?

这种方法只需要适用于简单的查询,对于复杂的查询,我可以编写硬编码的自定义查询

更新:我发现了一个叫做 NQuery 的东西,它应该对我有用http://nquery.codeplex.com/所以不要浪费时间回答!

sql linq parsing expression-trees sql-to-linq-conversion

4
推荐指数
1
解决办法
941
查看次数

基于一个属性合并2个列表并连接其他属性

IList<MyObject> ob1 = {new MyObject {Id = "1", Items = {BananaObject1, BananaObject2}}}  
IList<MyObject> ob2 = { new MyObject {Id = "1", Items = {BananaObject2, BananaObject3}},  
new MyObject {Id = "2", Items = {BananaObject3, BananaObject3}}}
Run Code Online (Sandbox Code Playgroud)

我想合并2个列表,以便得到结果列表

IList<MyObject> ob2 = { new MyObject {Id = "1", Items = {BananaObject1, BananaObject2, BananaObject3}},
new MyObject {Id = "2", Items = {BananaObject3, BananaObject3}}}
Run Code Online (Sandbox Code Playgroud)

因此,由于2个列表中第一个项目的ID相同,因此它们成为一个,并且其中一个属性被连接起来.
我可以做一个for循环来实现这一点,但我正在为此寻找一个整洁的最佳性能linq表达式.

谢谢

c# linq ienumerable join sql-to-linq-conversion

4
推荐指数
1
解决办法
2163
查看次数

LINQ with Group By和Min子句(字符串)

分组的例子- 在网上有计数选择linq的最小日期,但我找不到我的问题的特定解决方案.而且我也没有先进的linq理解来结合我迄今为止发现的这些解决方案.

我有这样的SQL查询:

select client_id 
from my_table /* Column1 : client_id, Column2 : _month */
group by client_id
having min(_month) = '2009-11'
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何将此查询转换为c#linq?.到目前为止,我写了类似的东西,但它没有给出我必须拥有的东西:

var query = dataTable.AsEnumerable() // This is my_table
  .GroupBy(c => c.Field<Int32>("client_id"))
  .Select(g => new
  {
      g.Key,
      minMonth = g.Min(c => c.Field<string>("_month"))
  })
  .Where(d => d.minMonth == "Some String like '2009-11'");   
Run Code Online (Sandbox Code Playgroud)

它实际上给了我这个SQL的结果,我不需要:

select client_id, min(_month) 
from my_table 
where _month = '2009-11' 
group by client_id
Run Code Online (Sandbox Code Playgroud)

注意:_month是一个格式为YYYY-MM的字符串.

c# sql linq having-clause sql-to-linq-conversion

3
推荐指数
1
解决办法
1万
查看次数

SQL到LINQ有多个join,count和left join

我用多个JOIN(包括一个LEFT JOIN)写了这个SQL请求.
它给了我预期的结果.

SELECT DISTINCT c.Id, 
       c.Title, 
       COUNT(v.Id) AS 'Nb_V2',
       COUNT(DISTINCT v.IdUser) AS 'Nb_V1',
       r.cnt AS 'Nb_R'
FROM TABLE_C c
JOIN TABLE_V v on c.Id = v.Id
LEFT JOIN ( 
    SELECT Id, COUNT(*)  AS cnt 
    FROM TABLE_R 
    GROUP BY Id
) r ON c.Id = r.Id
WHERE c.IdUser = '1234'
GROUP BY c.Id, c.Title, r.cnt
Run Code Online (Sandbox Code Playgroud)

但是,'Id喜欢Linq等同于此请求,将它放在我的应用程序的数据访问层.

我尝试过类似的东西:

var qResult = from c in dbContext.TABLE_C
              join v in dbContext.TABLE_V on c.IdC equals v.IdC
              join r in …
Run Code Online (Sandbox Code Playgroud)

sql linq join left-join sql-to-linq-conversion

3
推荐指数
1
解决办法
1215
查看次数