我注意到,即使是我使用GroupBy的简单LINQ查询也会被转换成与组键一样多的SQL查询。我还没有找到任何解释,为什么会发生这种情况,或者我如何避免它。
例如,查询:
from p in People group p by p.Name into g select g
转换为与列Name的不同值一样多的selects,就像下面这样:
-- Region Parameters
DECLARE @x1 VarChar(20) SET @x1 = 'John'
-- EndRegion
SELECT [t0].[Name], [t0].[SurName]
FROM [People]
可以从LINQ查询中提取sql语句吗?
比如说,我有这个LINQ表达式。
string[] names =
new string[] { "Jon Skeet", "Marc Gravell", "tvanfosson",
"cletus", "Greg Hewgill", "JaredPar" };
var results = from name in names
我使用LINQ查询我的POCO对象已经有一段时间了,但我还没有尝试过LINQ to SQL。我假设LINQ to SQL查询以某种方式转换为等价的SQL查询,鉴于此,我想知道这是否会影响LINQ to SQL查询的编写方式。
LINQ to Objects和LINQ to SQL之间有什么显著的区别吗?这会影响我应该如何为它们编写查询?
我想这样翻译查询:
SELECT * FROM Product WHERE Product.ID in (SELECT Product.ID FROM other_table)
进入LINQ。我读到过关于使用contains方法的文章,但问题是它会为传入的每个id生成很多参数,如下所示:
WHERE [Product].[ID] IN (@p0, @p1)
例如,如果我有一个数十亿个参数要传递到我的查询中,那么服务器就不能执行这么长的查询。有没有可能以这样一种方式创建LINQ查询:生成的SQL将接近原始SQL?
谢谢,罗梅克
我有两个表,我正在使用Linq to SQL。这些表具有一对多的关联。数据库模式的重要部分如下:
Camera:
Id (int)
SerialNumber (string)
...
CameraCalibration
Id (int)
CameraFk (int)
...
使用LINQ to SQL,我可以获得具有10个字符序列号的相机的所有相机校准列表,如下所示
var query = from n in db.CameraCalibrations
where n.Camera.SerialNumber.Length == 10
select n
我在这里读到了一些很棒的技巧,关于如何从LINQ生成合适的SQL。下面的LINQ查询就是我想出来的。(我根据我现在正在扩充的现有代码,再加上这个论坛的提示,编写了以下LINQ查询。)
捕获的结果SQL显示WHERE子句使用的是一组连续的OR,而不是IN。有没有办法强迫翻译成IN?
string[] circuits = circuitIDList.ToArray();
using (var ctx = new MyEntities())
{
var q = from n in ctx.v_myview
我突然遇到了一个使用LINQ to SQL将SQL Server数据库中的一些记录从一个表移动到另一个表的问题。有没有可能在LINQ to SQL中编写一个像这样简单的查询:
INSERT INTO Table2 SELECT * FROM Table1 WHERE Selected = 1
GO
DELETE FROM Table1 WHERE Selected = 1
GO
而不使用循环和集合?
这是我的sql查询:SELECT ParkingPlaceName, NoOfParkingPlaces, COUNT(Place.ParkingAreaID) AS NoOfCarsParked, NoOfParkingPlaces-COUNT(Place.ParkingAreaID) FROM ParkingArea LEFT JOIN Place ON ParkingArea.ParkingAreaID = Place.ParkingAreaID LEFT JOIN Car ON Car.CarID = Place.CarID GROUP BY ParkingPlaceName, No
我需要创建一个linq查询,用于从某个函数结果为true的数据库表中选择数据。
我使用的是linq-to-sql,该函数运行良好,我可以编写一个基本的查询来获取数据。
我的问题是,我有一个内存中的参数列表,实际上我需要多次运行linq查询(每个参数列表项运行一次)并聚合结果。
我曾尝试将.Any()用作连接,但linq不喜欢将非数据库结果集与数据库结果集连接起来。
以下是一些示例代码:
Parameter list: // lets call it "l"
{
One,
Two,
Three
}
查询
From w in words where funcWord(
嗨,我有一个功能集Id的数组,我的Vehicles表有一个子表作为FeatureSets,我写的Sql查询如下
SELECT [t0].[ID]
FROM [dbo].[SearchResultView] AS [t0]
Join [dbo].[VehicleFeatureSet] AS [t1] on t0.ID = t1.VehicleID
where t1.FeatureSetID = 1 and t1.FeatureSetID= 2 and t1.FeatureSetID= 3
我试过了。但是我不能
var features = Request.QueryString[&
我想用左边的LINQ查询编写一个join.For,我可以编写相应的SQL查询,它返回所需的输出,但在linq中相同的查询对我不起作用。
这就是我的SQL看起来的样子:
SELECT Table1.ID, Table1.Description
FROM Table1 LEFT OUTER JOIN
Table2 ON Table1.AID = Table2.AID AND Table1.TID = Table2.TID
WHERE (Table2.Status <> 'Using') OR (Table.Status IS NULL)
此查询为我返回
嗨,我正在尝试写一个SQL查询到LINQ查询。我的SQL查询如下:
select BookingArrivedEnquiredTime
from BookingArriveds
where BookingArrivedEnquiredDateTime='2015-02-17 00:00:00.000'
order by CAST(('01/01/2000 ' + BookingArrivedEnquiredTime) AS DATETIME)
如何在LINQ中编写此查询?
根据所有示例,将SQL转换为LINQ for this子句,如本例所示:
SELECT NAME
FROM TABLES
GROUP BY NAME
HAVING COUNT(*) > 1
is:(vb.net)
from t in tables
group t by t.NAME into g = Group
where g.count > 1
select g
但是,上面的LINQ语句被转换为以下SQL:
SELECT [t1].[NAME] AS [Key]
FROM (
SELECT COUNT(*) AS [value], [t0].[NAME]
我有一个SQL查询:
SELECT A.Codplano, A.Secao, A.Setor,A.Subsetor,A.Contato, ISNULL(B.Subord,'NÃO
LANÇADA')AS Situacao
FROM vwPLANODIN A LEFT JOIN LANCADA B
ON A.Codplano = B.Subord
and B.Data = '2014-06-10'
WHERE B.ID IS NULL and A.Sitio = 7341
用Linq编写:
var cob = from A in dataClass.vw
如何使用Linq2Sql context在linq中编写此查询?
select SUM(ORDERQTY * MULTIPLIER) AS VOL_USD
from Executions with (nolock)
where TRANSACTTIME >= '2013-08-01 00:00:00'
and TRANSACTTIME < '2013-09-01 00:00:00'
and MTCONTEXT in (5,6)
and ORDERQTY > 0
AND SOURCE = 'INTMT'
and LEFT(S
是否可以在linq to entities/sql的编译查询中使用诸如switch语句之类的语句?例如,当从数据库返回排序的记录时,我希望在一个编译的查询中使用一个类似switch的语句来对不同的属性进行排序,而不是必须为您想要排序的每个属性编写2个编译查询(升序和降序),即使是一个简单的可排序网格,也可以编写多达10个编译查询。
在T-SQL中,使用case语句很容易做到这一点,因为我可以想象大多数数据库都支持这样的结构,那么为什么linq/entity框架不支持它呢?
有什么解决方案吗?
我需要将sql查询转换为LINQ (查询语法),但我仍然停留在IN语句上。
如何在sql查询中为这个WHERE子句编写LINQ:
WHERE OR_ID IN (SELECT DISTINCT OR_ID
FROM OR_ORDER_WORKER_HISTORY owHist
WHERE CLIENT_RATE_ID = @clientRateId)
我正在尝试从SQL查询中获取Linq查询。sql查询为:
Select * from EMP where Salary = (Select Max(Salary) from EMP)
我已经创建了一个Linq查询,但它根本不起作用:
var result = emps.where(emp => emp.Salary == emps.Max(emp.sal));
我该如何解决这个问题?
我有这样一种情况,两个表应该用或条件连接多个列。在这里,我有一个sql查询示例,但我无法将其转换为linq查询。
select cm.* from Customer cm
inner join #temp tmp
on cm.CustomerCode = tmp.NewNLKNo or cm.OldAcNo = tmp.OldNLKNo
这就是我编写linq查询的方式
await (from cm in Context.CustomerMaster
join li in list.PortalCustomerDetailViewModel
我有一个有很多位列的产品信息表。可以从具有每个列的复选框的接口查询此表。复选框被分组为几个相关的组。
例如,其中三栏描述了产品是否适合各种市场,即汽车、航空和海运。
如果没有选中这些复选框,我希望执行以下SQL。
SELECT * FROM Products
如果对Automotive进行了检查,应执行以下SQL
SELECT * FROM Products WHERE Automotive = 1
如果检查了不止一个,我希望选择是在一起还是一起
SELECT * FROM Products WHERE
Automotive = 1
OR
Aviation = 1
EmployeeId Name ManagerId
------------------------------
1 A null
2 B null
3 C 1
4 D 3
5 E 2
仅仅使用这个表,如何编写一个linq查询(使用linq to sql)来递归地获取父数据。
例如,如果选择的雇主Id为4,则应给出Id为4、3、1的员工列表
谢谢。
我是linq的初学者,我已经编写了这个T-SQL查询
select * from DOCUMENT_TYPES where document_id in(
select document_id from Clearance_Document where Clearance_id=(select clearance_id from clearance_id from request where request_id=3))
我想把这个T-SQL查询转换成linq,请帮帮我,谢谢
我使用LINQ (非实体框架),System.Data.Linq.DataContext库,访问Server 2005数据库并使用.Net Framework4。
表dbo.Dogs有一个类型为CHAR(1) NULL的列"Active“。如果我要直接编写SQL,那么查询应该是:
SELECT * FROM dbo.Dogs where Active = 'A';
LINQ查询如下:
from d in myDataContext.Dogs where d.Active == 'A' select d;
从上述LINQ查询生成的SQL将活动字段转换为UN
我正在尝试为以下sql查询构建一个linq查询:
SELECT *
FROM [QryFiles2]
WHERE (left(Demande,6) IN (select NoBVR from tblRequest))
知道QryFiles2是一个实体,tblRequest也是一个实体,我得到了一些类似的东西:
from f in db.QryFiles2
where f.Demande.Substring(0,6) /* in (select NoBVR from tblRequest) */
select f
问题是,我不知道如何使用linq来表达in sql语句。您知道如何在不使用原始s
当您运行Linq to Sql或Linq to Entites来获取记录列表时,它会运行query来选择表中的所有字段。这是一个有效的解决方案吗。假设:我运行这个LINQ
dim lstCustomers = from c in db.Customers select c
无论我是否需要所有字段,它都会运行查询以从表中获取所有字段。我在MVC中使用asp.net,所以我应该在视图中编写这个查询吗(在视图中,我只需要CustomerID和名称)
dim lstCustomers = from c in db.Customers _
selec
我是实体框架(EF)和LINQ的新手。
我的问题有点长,但真的很简单。如果我创建一个查询来使用LINQ从我的RDBMS中检索数据,比如:
using (MyEntities myEntities = new MyEntities())
{
// ...
var query = from rec in myEntities.SomeTable
where rec.Id == someId
select rec;
// ...
}
当最终执行时,这实际上是转换为SQL并在DB本身(无论机器在哪里)上执行,还是底
SELECT ISNULL(MAX(ColumnName) + 1, 1) AS ColumnName
FROM TableName
如何在 linq .Is中编写此查询有任何将sql转换为linq的方法。我想要一个转换器。
上面的查询运行良好,但我希望在linq .上获得相同的输出,如何?
我知道如何选择max
var products = ((from p in db.TableName
select p.ColumnName).Max());
好的,我想这是一个简单的问题。我在tblWorkouts和tblPersonalRecords之间有一对多的关系。我现在已经从tblWorkouts中删除了一些行,而没有从tblPersonalRecords中删除它们(我应该设置一个外键和一个级联delete...)。
我正在尝试找出一个查询来查找tblPersonalRecords中的孤立行。这是我尝试过的:
from s in db.tblPersonalRecords
where s.tblWorkoutRecord.WorkoutSummaryID == null
select s
这不管用。如何编写LINQ查询来查找孤立行?我正在使
WIth Ria服务,我有一个linq查询,如下:
EntityQuery<Employee> query = from e in ctx.GetEmployeeQuery()
orderby e.DateCreated descending
select e;
然后,我想从这个查询中获得前100条记录,比如SQL select top 100 * from Employee
如何编写linq查询?
我正在学习Linq,在这种情况下,我想像这样编写我的查询 Select ordernumber
from orders
where ordernumber not in (Select ordernumber
from shipdata) 我知道这将在MS SQL Server中工作,但我如何在LINQ中编写它?
我们有两个表:
TableA : ID (bigint),Title
TableB : ID (bigint),RelatedObjectID (varchar(36)),Title
我们希望有一个这样的SQL查询:
SELECT a.Title as ATitle,b.Title as BTitle FROM TableA a INNER JOIN TableB b ON CAST(a.ID as varchar(36))=b.RelatedObjectID
下面是我们是如何使用Linq编写的:
from a in TableA
join b in TableB on a.ID.ToStri
我正在使用LINQ to SQL,并有一个名为Product的数据库表,其中包含20列。Product表映射到LINQ to SQL元数据中的Product类。
我想使用我的dbContext检索一些产品记录,但只填充10列,而不是所有20列。
如何指定应该使用LINQ to SQL (或EF)返回/填充哪些列?
我知道一种方法是使用存储过程,但这就是问题所在。
谢谢,