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) 我正在尝试对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)
很少的帮助将不胜感激.
我正在尝试在我的酒店预订项目上实施按日期筛选.
有人可以帮我把这个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) 我们希望在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) 我有一个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/关于"查找节点深度"一章
在添加这个问题之前,我确实在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.
有谁知道有什么库可以用来解析 SQL 查询并构建 linq 表达式,然后可以对 linq to 对象进行编译和使用吗?
这种方法只需要适用于简单的查询,对于复杂的查询,我可以编写硬编码的自定义查询
更新:我发现了一个叫做 NQuery 的东西,它应该对我有用http://nquery.codeplex.com/所以不要浪费时间回答!
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表达式.
谢谢
有分组的例子- 在网上有计数或选择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的字符串.
我用多个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)