Questions tagged «linq-to-sql»

LINQ to SQL是.NET Framework 3.5版的组件,它提供了运行时基础结构,用于将关系数据作为存储在Microsoft SQL Server中的对象进行管理。


1
最高还是默认?
从可能不返回任何行的LINQ查询中获取最大值的最佳方法是什么?如果我只是做 Dim x = (From y In context.MyTable _ Where y.MyField = value _ Select y.MyCounter).Max 查询不返回任何行时出现错误。我可以 Dim x = (From y In context.MyTable _ Where y.MyField = value _ Select y.MyCounter _ Order By MyCounter Descending).FirstOrDefault 但这对于这样一个简单的请求来说有点钝。我是否缺少更好的方法? 更新:这是背景故事:我正在尝试从子表中检索下一个资格计数器(旧系统,请不要让我开始...)。每个患者的第一个合格行始终为1,第二个合格行始终为2,依此类推(显然,这不是子表的主键)。因此,我要为患者选择现有的最大计数器值,然后将其添加1以创建新行。当没有现有的子值时,我需要查询返回0(所以加1将使我的计数器值为1)。请注意,我不想依赖子行的原始计数,以防旧版应用程序在计数器值中引入空白(可能)。我很想使这个问题过于笼统。
175 c#  .net  linq  linq-to-sql 

5
LINQ-左联接,分组依据和计数
假设我有以下SQL: SELECT p.ParentId, COUNT(c.ChildId) FROM ParentTable p LEFT OUTER JOIN ChildTable c ON p.ParentId = c.ChildParentId GROUP BY p.ParentId 如何将其转换为LINQ to SQL?我被困在COUNT(c.ChildId),生成的SQL似乎总是输出COUNT(*)。这是到目前为止我得到的: from p in context.ParentTable join c in context.ChildTable on p.ParentId equals c.ChildParentId into j1 from j2 in j1.DefaultIfEmpty() group j2 by p.ParentId into grouped select new { ParentId …
166 c#  .net  linq  linq-to-sql 

6
Linq to Sql:多个左外部联接
我在弄清楚如何使用LINQ to SQL使用多个左外部联接时遇到麻烦。我了解如何使用一个左外部联接。我正在使用VB.NET。以下是我的SQL语法。 T-SQL SELECT o.OrderNumber, v.VendorName, s.StatusName FROM Orders o LEFT OUTER JOIN Vendors v ON v.Id = o.VendorId LEFT OUTER JOIN Status s ON s.Id = o.StatusId WHERE o.OrderNumber >= 100000 AND o.OrderNumber <= 200000

6
LINQ to SQL-具有多个联接条件的左外部联接
我有以下SQL,我正尝试将其转换为LINQ: SELECT f.value FROM period as p LEFT OUTER JOIN facts AS f ON p.id = f.periodid AND f.otherid = 17 WHERE p.companyid = 100 我已经看到了左外部连接(即into x from y in x.DefaultIfEmpty()等)的典型实现,但是不确定如何引入其他连接条件(AND f.otherid = 17) 编辑 为什么AND f.otherid = 17条件是JOIN而不是WHERE子句的一部分?因为f某些行可能不存在,所以我仍然希望包含这些行。如果在JOIN之后在WHERE子句中应用了条件-那么我就没有想要的行为。 不幸的是: from p in context.Periods join f in context.Facts on p.id …
148 c#  sql  linq  linq-to-sql  outer-join 


6
LINQ to SQL左外部联接
此查询是否等同于LEFT OUTER联接? //assuming that I have a parameter named 'invoiceId' of type int from c in SupportCases let invoice = c.Invoices.FirstOrDefault(i=> i.Id == invoiceId) where (invoiceId == 0 || invoice != null) select new { Id = c.Id , InvoiceId = invoice == null ? 0 : invoice.Id }

9
LINQ-to-SQL中不区分大小写的字符串比较
我已经读到使用ToUpper和ToLower执行不区分大小写的字符串比较是不明智的,但是在LINQ-to-SQL方面我看不到其他选择。LINQ-to-SQL会忽略String.Compare的ignoreCase和CompareOptions参数(如果使用区分大小写的数据库,则即使要求进行不区分大小写的比较,也会得到区分大小写的比较)。ToLower或ToUpper是这里的最佳选择吗?这个比那个好吗?我以为我在某处读到ToUpper更好,但是我不知道这在这里是否适用。(我正在做很多代码审查,每个人都在使用ToLower。) Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0 这将转换为仅将row.Name与“ test”进行比较的SQL查询,并且在区分大小写的数据库上不会返回“ Test”和“ TEST”。
137 .net  sql  vb.net  linq  linq-to-sql 

8
LINQ to SQL:在多个列上进行多个联接。这可能吗?
鉴于: TABLE_1具有以下列的列命名的表: ID ColumnA ColumnB ColumnC 我有SQL查询,其中TABLE_1基于关闭的两次自己加入ColumnA,ColumnB,ColumnC。该查询可能看起来像这样: Select t1.ID, t2.ID, t3.ID From TABLE_1 t1 Left Join TABLE_1 t2 On t1.ColumnA = t2.ColumnA And t1.ColumnB = t2.ColumnB And t1.ColumnC = t2.ColumnC Left Join TABLE_1 t3 On t2.ColumnA = t3.ColumnA And t2.ColumnB = t3.ColumnB And t2.ColumnC = t3.ColumnC ... and query continues …




5
如何仅选择LINQ中具有最高日期的记录
我有一个带有以下字段的表“ lasttraces”。 Id, AccountId, Version, DownloadNo, Date 数据如下所示: 28092|15240000|1.0.7.1782|2009040004731|2009-01-20 13:10:22.000 28094|61615000|1.0.7.1782|2009040007696|2009-01-20 13:11:38.000 28095|95317000|1.0.7.1782|2009040007695|2009-01-20 13:10:18.000 28101|15240000|1.0.7.1782|2009040004740|2009-01-20 14:10:22.000 28103|61615000|1.0.7.1782|2009040007690|2009-01-20 14:11:38.000 28104|95317000|1.0.7.1782|2009040007710|2009-01-20 14:10:18.000 在LINQ to SQL中,如何才能仅获取每个AccountId的最后lasttrace(日期最高的那一个)?
117 c#  .net  linq  linq-to-sql 

13
如何在数据库表的列中存储列表
因此,按照Mehrdad对一个相关问题的回答,我得到一个“适当的”数据库表列不存储列表的信息。相反,您应该创建另一个表,该表可以有效地保存所述列表的元素,然后直接或通过联结表链接到该列表。但是,我要创建的列表类型将由唯一项组成(与链接问题的成果不同)例)。此外,列表中的项目已明确排序-这意味着如果将元素存储在另一个表中,则每次访问它们时都必须对它们进行排序。最后,该列表基本上是原子性的,因为无论何时我想访问该列表,我都想访问整个列表,而不只是其中的一部分-因此,必须发出数据库查询以将各个部分汇总在一起似乎很愚蠢。名单。 AKX的解决方案(在上面链接)是序列化列表并将其存储在二进制列中。但这似乎也不方便,因为这意味着我必须担心序列化和反序列化。 有没有更好的解决方案?如果是没有更好的解决办法,那么为什么呢?似乎这个问题应该不时出现。 ...只是更多信息,让您知道我来自哪里。我刚开始大致了解SQL和数据库后,便开始使用LINQ to SQL,所以现在我有点被宠坏了,因为我希望处理我的编程对象模型而不必考虑对象的方式被查询或存储在数据库中。 谢谢大家! 约翰 更新:所以在得到的第一批答案中,我看到“您可以使用CSV / XML路线...但是不要!”。所以现在我正在寻找原因的解释。为我提供一些很好的参考。 另外,为了让您更好地了解自己的工作情况:在数据库中,我有一个功能表,该表将具有(x,y)对的列表。(该表还将包含其他信息,这些信息对我们的讨论没有影响。)我将永远不需要看到(x,y)对列表的一部分。而是,我将所有这些都放置在屏幕上。我将允许用户拖动节点以偶尔更改值或向图中添加更多值。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.