问题标签 [linq-query-syntax]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用 linq 返回对象的特定属性列表
给定这样的类:
可以说我现在有一个List<Stock>
. 如果我想检索所有 StockID 的列表并将其填充到 IEnumerable 或 IList 中。显然我可以做到这一点。
但是有什么方法可以使用 Linq 来达到相同的结果吗?我认为Distinct()
可能会这样做,但无法弄清楚如何达到预期的结果。
c# - 将存储过程转换为 LINQ
我正在使用 MVC3 并且仍在学习 LINQ。我在尝试将查询转换为 LINQ to Entities 时遇到了一些麻烦。我想返回一个 Json 方法
我的存储过程
我有几张表,我开始在 LINQ 中写出来,但我不确定如何正确返回正确的类型或强制转换它。
我的控制器
我将如何将参数传递给查询,希望数据以 json 格式返回。
c# - 正确过滤 Linq 查询
我有这个查询从一堆商店中检索销售,并将它们作为列表返回。在我的报告请求屏幕上,用户可以按多个 id 进行过滤 - ShopOwnerId、ShopRegionId、ShopTypeCode 等。
我的查询构造为获取所选日期之间的所有销售,然后根据选择进行过滤。这显然是非常低效的。:
您可以看到,此方法仅在未选择过滤器时才在特定日期之间查询销售表。
我坚持的是,用户可以选择多个过滤器 - 例如,他们可能选择一个 regionId 和一个 ShopTypeCode,所以我不想为每个 if 过滤器查询 ctn.ShopSales,因为如果不止一个是选择,它将清除以前检索到的值。
有没有人对如何解决这个问题有任何建议?如果需要更多信息,请询问!
谢谢
c# - Linq-to-SQL,传递表达式> 在查询语法中选择方法
假设,我们有下一个代码:
我想将选择器提取为表达式并将其存储在另一个地方。在方法语法中,它将如下所示:
是否可以将此 LinqToSql 方法链转换为保持 Expression 变量就地的查询语法?
升级版:
为了澄清我的问题,我使用 DefaultIfEmpty 进行左连接,它是相等查询的一种简短形式:
它可以正常工作,因为它使用内联表达式进行编译。null
当没有对应的 时,它分配给 Name 字段grunt
。但是如果用调用外部映射器方法重写这个查询,它将被编译为方法调用,这将得到可为空grunt
的参数,并会导致 NullReferenceException:
当然,我可以在映射器方法中添加空检查,但我在 DAL 中试图实现的是将选择器提取到映射器类中,并可能在那里省略空检查。
c# - 将 EF LINQ 方法语法转换为查询语法
您将如何使用 LINQ 查询语法编写这个完全相同的查询?
我虽然这应该工作,但它没有:
如果你想玩它,这里有一个测试程序:
entity-framework - 跨关联的 LINQ 查询
我有一个从我的数据库生成的实体框架。在这个数据库中有一个名为 User_Security_Role 的表,它由两个字段组成:Employee_ID 和 User_Name。这两个字段都充当其主键,也是外键。这些字段来自两个表 Sytem_Role(以 Role_ID 作为其 PK)和 User_Identity(以 User_Name 作为其 PK)。生成 .edmx 文件时,User_Security_Role 表不是作为表生成的,而是作为两个实体之间的关联集生成的:System_Role 和 User_Identity。
我想用以下查询查询 EF:
但是,“User_Security_Role”没有显示为实体集中的实体,现在我不确定如何查询它,因为它是一个关联集。如何编写 linq 查询以从关联而不是实体中选择数据?
.net - 如何使用 Lambda 将 LINQ 理解查询语法转换为方法语法
是否有工具、过程或解决方案可以将以下 LINQ 查询语法转换为带有 Lambda 的方法语法(点表示法)?我希望解决方案将以下查询语法转换为这样的方法语法。
到以下
我想用它来更好地学习方法语法。
linq - 在 CRM 2011 插件的同一语句中使用多个 JOIN 时出现 LINQ 错误
嗨,我正在尝试在 CRM 2011 中加入多个实体,但我收到错误消息:{“'xrmsm_sessionEnrollments' 实体不包含名称 = 'xrmsm_termsid'.”的属性。”}。这是正确的,但我正在加入具有该属性的实体。
我的 Linq 查询:
var query2 = from e in svsContext.xrmsm_sessionEnrollmentsSet
我在 SQL Server 上工作的原始 SQL 查询:
vb.net - 我可以在查询表达式语法中指定 Queryable.GroupBy(而不是 Enumerable.GroupBy)吗
当我编写Group By
in 查询表达式语法时,编译器会自动选择Enumerable.GroupBy
我想要的 tareget 方法,我得到一个IEnumerable
back 而不是IQueryable
. 这意味着后续g.Sum
调用(在 my 内部Select
)需要 aFunc(Of TSource, int)
而不是Expression(Of Func(Of TSource, int))
. 有没有办法强制Group By
使用它Queryable.GroupBy
并给我一个IQueryable
?
人为的示例代码
我为什么要这样做?
编译器会根据目标变量类型自动在 lambda 和表达式之间进行转换(即Dim f As Func(Of String, Integer) = Function(x) x.Length()
和都是有效的),因此 an和Dim e As Expression(Of Func(Of String, Integer)) = Function(x) x.Length()
之间的代码没有明显差异。IEnumerable
IQueryable
问题是,LINQ to Entities(我假设其他数据库支持的 LINQ 实现)依赖于表达式树来转换为 SQL。这意味着IEnumerable
lambda 版本不会IDbSet
像我在这个旧问题中发现的那样对抗。
c# - 如何使用查询语法来创建排列?
我试图编写一种方法,该方法尽可能简单地返回给定枚举的排列。编码:
由于迭代器块中的代码已经简化,我试图使它成为一个简单的 LINQ 查询表达式。
在嵌套的代码中有一个递归,甚至在;foreach
之外可能还有另一个可能 yield foreach
这是我用查询语法重写它的困难部分。
我读过这个答案:
但我想这不是我的解决方案..
我尝试了各种方法,并认为这并不容易做到。我怎样才能完成它?
(Exchange
方法是另一个问题,我问了一个问题:
但我想这不是问题..)