繁体   English   中英

Linq Sub-Select

Linq Sub-Select

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

如何在LINQ中编写子选择。

如果我有一个客户列表和一个订单列表,我希望所有没有订单的客户。

这是我的伪代码尝试:

    var  res = from c in customers 
where c.CustomerID ! in (from o in orders select o.CustomerID) 
select c
4 个回复

怎么样:

var res = from c in customers 
          where !orders.Select(o => o.CustomerID).Contains(c.CustomerID)
          select c;

另一种选择是使用:

var res = from c in customers
          join o in orders 
               on c.CustomerID equals o.customerID 
               into customerOrders
          where customerOrders.Count() == 0
          select c;

您使用LINQ to SQL还是别的什么,顺便问一下? 不同的口味可能有不同的“最佳”方式

如果这是由数据库支持的,请尝试使用导航属性(如果已定义它们):

var res = from c in customers
          where !c.Orders.Any()
          select c;

在Northwind上,这会生成TSQL:

SELECT /* columns snipped */
FROM [dbo].[Customers] AS [t0]
WHERE NOT (EXISTS(
    SELECT NULL AS [EMPTY]
    FROM [dbo].[Orders] AS [t1]
    WHERE [t1].[CustomerID] = [t0].[CustomerID]
    ))

这项工作做得很好。

            var result = (from planinfo in db.mst_pointplan_info
                                                           join entityType in db.mst_entity_type
                                                           on planinfo.entityId equals entityType.id
                                                           where planinfo.entityId == entityId
                                                           && planinfo.is_deleted != true
                                                           && planinfo.system_id == systemId
                                                           && entityType.enity_enum_id == entityId
                                                           group planinfo by planinfo.package_id into gplan
                                                           select new PackagePointRangeConfigurationResult
                                                           {
                                                               Result = (from planinfo in gplan
                                                                         select new PackagePointRangeResult
                                                                         {
                                                                             PackageId = planinfo.package_id,
                                                                             PointPlanInfo = (from pointPlanInfo in gplan
                                                                                              select new PointPlanInfo
                                                                                              {
                                                                                                  StartRange = planinfo.start_range,
                                                                                                  EndRange = planinfo.end_range,
                                                                                                  IsDiscountAndChargeInPer = planinfo.is_discount_and_charge_in_per,
                                                                                                  Discount = planinfo.discount,
                                                                                                  ServiceCharge = planinfo.servicecharge,
                                                                                                  AtonMerchantShare = planinfo.aton_merchant_share,
                                                                                                  CommunityShare = planinfo.community_share
                                                                                              }).ToList()
                                                                         }).ToList()
                                                           }).FirstOrDefault();
var  res = (from c in orders where c.CustomerID == null
               select c.Customers).ToList();

或者除了()

1 LINQ子选择错误

我对此结构有异议。 我需要获取所有LocnCode并由它们区分,因此结果应为List<string> 。 我正在尝试这样做 但是有这个错误: Cannot implicitly convert type 'System.Collections.Generic.I ...

2 linq to sql子选择

我有两个表,分别表示混合物和混合物的成分。 表格布局如下: 现在,我要做的是获取用户输入的组件名称列表,并找到包含所有这些组件的任何混合的ID。 在SQL中,我可以这样: 等等,为每个组件添加一个子选择。 我将如何在linq to sql中执行类似的操作? 直到用 ...

2012-03-26 22:29:18 1 339   sql/ linq
3 Linq子选择查询

我有这样的集合 出现在手表中观看时的结构 工作表1 样品A. 样品B. 工作表2 样本C. 样品A. 我想要的是在每个样本中设置AssociatedSheets以显示包含它的工作表。 ...

4 在oracle中进行子选择

我正试图从子选择中的另一个表中选择最新的价格。 但我无法弄清楚如何让它发挥作用。 这就是我尝试过的: 子选择单独工作,但找不到article_table.part_no : SQL错误:ORA-00904:“article_table”。“part_no”:无效的标识符 ...

5 LINQ根据值类型从字典中进行子选择

我试图从Dictionary<String, String>选择一个Dictionary<String, Double> Dictionary<String, String> 。 为此,我使用IEnumrable<>.Where子选择一个Dict ...

2012-12-20 00:05:44 2 892   c#/ linq
6 Linq-to-SQL:如何对子选择执行计数

我仍在设法弄清楚如何正确使用LINQ-to-SQL,而不仅仅是编写自己的存储过程。 在代码中,将一个userId传递到该方法中,然后LINQ使用它从与该userId匹配的GroupTable表中获取所有行。 GroupUser表的主键是GroupUserId ,它是Group表中的外键。 ...

7 为什么LINQ-to-Entities将此查询放在子选择中?

我有以下LINQ查询: 运行时转换为以下内容: 现在我很确定有一个子选择的原因是因为我有()包围的基本LINQ查询然后执行.Distinct()但我不太了解LINQ以确保这一点。 如果确实如此,那么有一种方法可以重构/编码我的查询,以便不会发生子选择吗? 我知道这似乎我只 ...

9 使用子选择更新查询

x_addr_table1 我试图更新上表中的电子邮件,其中成员电子邮件不同。 我正在尝试通过创建2个临时表来实现这一目标。 x_primary_email_table2 x_profilepay_email_table3 这是我的更新查询: 我在这里 ...

2018-05-15 13:11:24 1 54   db2
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM