- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我正在通过 MS 101 linq 示例编写代码。
“JoinOperators”给我带来了困难,因为我试图将查询表达式重构为 lambda 语法,反之亦然。
无论如何,在例子105我看到这个查询表达式:
var supplierCusts =
from sup in suppliers
join cust in customers on sup.Country equals cust.Country into cs
from c in cs.DefaultIfEmpty() // DefaultIfEmpty preserves left-hand elements that have no matches on the right side
orderby sup.SupplierName
select new
{
Country = sup.Country,
CompanyName = c == null ? "(No customers)" : c.CompanyName,
SupplierName = sup.SupplierName
};
我尝试以这种方式将其实现为 lambda:
// something is not right here because the result keeps a lot of "Join By" stuff in the output below
var supplierCusts =
suppliers.GroupJoin(customers, s => s.Country, c => c.Country, (s, c) => new { Customers = customers, Suppliers = suppliers })
.OrderBy(i => i.Suppliers) // can't reference the "name" field here?
.SelectMany(x => x.Customers.DefaultIfEmpty(), (x, p) => // does the DefaultIfEmpty go here?
new
{
Country = p.Country,
CompanyName = x == null ? "(No customers)" : p.CompanyName,
SupplierName = p // not right: JoinOperators.Program+Customer ... how do I get to supplier level?
});
出于某种原因,我无法通过这种方式访问供应商级别的信息。当我将 customers
切换到 suppliers
时,我无法访问客户级别的信息。
是否有一些 SelectMany()
的重载让我从两个对象的字段级中提取?
另外,我不明白为什么 GroupJoin()
似乎返回一个包含 2 个集合(suppliers
和 customers
)的对象。难道不应该以某种方式加入他们吗?
我想我不明白 GroupJoin()
是如何工作的。
最佳答案
您在群组加入中使用了错误的结果选择器,这就是问题开始的地方。这是固定查询:
var supplierCusts =
suppliers
.GroupJoin(customers,
sup => sup.Country,
cust => cust.Country,
(sup, cs) => new { sup, cs })
.OrderBy(x => x.sup.Name)
.SelectMany(x => x.cs.DefaultIfEmpty(), (x, c) =>
new
{
Country = x.sup.Country,
CompanyName = c == null ? "(No customers)" : c.CompanyName,
SupplierName = x.sup.Name
});
关于c# - Linq SelectMany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15070665/
这个问题已经有答案了: Difference Between Select and SelectMany (21 个回答) 已关闭 5 年前。 我遇到了 SelectMany 表达式的问题,我无法理解
此查询返回员工 ID、姓名、公司 ID、公司名称和公司城市。我缺少员工电子邮件地址(emailAddress 存储在 EmployeeEmailAddress 表中)和员工电话号码(phoneNumb
文章中Deep Dive into Rx SelectMany作者在最后的注释中提到了以下内容; Note: To mitigate the ordering issue, SelectMany()
我正在解析 XML 结构,我的类如下所示: class MyXml { //... List Content { get; set; } //... } class Node
我在用户组中有动态字段,我想根据用户组中的用户来选择它们。 基本上我想模拟像 .Where(x => x.UserGroupId == x || ... 这样的查询,否则它会进行大约 20 个查询来获
您好,我正在通过 MS 101 linq 示例编写代码。 “JoinOperators”给我带来了困难,因为我试图将查询表达式重构为 lambda 语法,反之亦然。 无论如何,在例子105我看到这个查
如果没有输入和输出,很难解释这一点。我制作了一个简单的汽车示例,以避免我的项目出现不必要的细节。 我有这个列表: List cars = new List() { new car() { ca
所以我有这些部分类。有关 ParseFCIE 的部分实现和我的问题,请参见下文。 class CiscoSwitch { Dictionary VSANList = new Dictionar
众所周知,Enumerable.SelectMany将一系列序列展平为单个序列。如果我们想要一种可以压平序列序列序列的序列的方法,等等递归怎么办? 我很快想出了一个使用 ICollection 的实现
这个问题在这里已经有了答案: SelectMany() Cannot Infer Type Argument -- Why Not? (1 个回答) 关闭 7 年前。 当我尝试编译我的代码时出现以下
我正在使用 NUnit、Moq 和 StructureMap。 我有以下 NUnit 测试: [Test] public void ShouldCallCustomMethod_For
我已经尝试了很长时间来寻找一种“干净”的模式来处理具有匿名类型的 .SelectMany,当您并不总是希望返回结果时。我最常见的用例如下所示: 我们有一份客户名单,我想对其进行报告。 每个客户的数据都
假设我有以下通用组合生成器静态方法: public static IEnumerable> GetAllPossibleCombos( IEnumerable> items) { IE
我可以使用 SelectMany 展平集合中子集合的结果: // a list of Foos, a Foo contains a List of Bars var source = new Li
基本上,我想做的是左外连接两个表并将它们呈现在一个平面结果中。为简单起见,我的两个表如下所示: tot["nameA", "nameB", "nameC"] critItg["nameA", "nam
如何以另一个 .SelectMany() 形式编写此 LINQ 表达式? var result = from a in numbersA
我目前正在查询如下字典, foreach (var instance in Dict) { X += $"(Description = '{instance.Key}') OR "; } 我可以
仅使用扩展方法应用 SelectMany 获得三个或更多序列的交叉连接的最佳方法是什么?有没有其他方法可以实现交叉连接? 测试数据 var a = Enumerable.Range(11, 2); v
我正在使用 Nancy 和 RavenDB 构建一个照片库我的模型类如下: [JsonObject(IsReference=true)] public class Album { public
我想知道如何使用SelectMany()。这似乎需要很多争论,从我自己的研究中我注意到 SelectMany() 可能是所有其他选择操作的“父亲”。 最佳答案 选择多个允许您从查询源中选择一个 IEn
我是一名优秀的程序员,十分优秀!