【发布时间】:2019-07-26 08:54:52
【问题描述】:
我有一个非常简单的代码 sn-p 来测试如何使用“join”将 2 个数据部分连接在一起,如下所示:
class Employee
{
public string EmpName { get; set; }
public int DeptId { get; set; }
}
class Department
{
public int DeptId { get; set; }
public string DeptName { get; set; }
}
class UseJoin
{
public static void Test()
{
IEnumerable<Employee> employees = new[]
{
new Employee{ EmpName="John", DeptId=1 },
new Employee{ EmpName="Kate", DeptId=2 },
new Employee{ EmpName="Dave", DeptId=1 },
new Employee{ EmpName="Dane", DeptId=3 },
new Employee{ EmpName="Greg", DeptId=4 },
new Employee{ EmpName="Tony", DeptId=4 },
};
IEnumerable<Department> departments = new[]
{
new Department{ DeptId = 1, DeptName = "math" },
new Department{ DeptId = 3, DeptName = "physics" },
new Department{ DeptId = 4, DeptName = "history" },
new Department{ DeptId = 5, DeptName = "mandarine" },
};
var result = from e in employees
join d in departments
on e.DeptId equals d.DeptId
select new { e.EmpName, d.DeptName };
Console.WriteLine(result);
}
}
运行此程序时,控制台窗口会打印如下异常/错误:
System.Linq.Enumerable+<JoinIterator>d__38`4[UseNullable.Employee,UseNullable.Department,System.Int32,<>f__AnonymousType0`2[System.String,System.String]]
我尝试调试,但似乎无法直接调试此声明式 linq,visual studio 一直提示错误消息框。
我在哪里出错以及如何解决?
【问题讨论】:
-
这不是一个错误,它只是你的一种匿名类型的链接表达式。您可以对其进行迭代并查看内容
-
如果您想查看结果,请尝试
var myList = result.ToList()。在该行之后放置一个断点并查看myList的内容。这会给出任何例外吗? -
Id 2 没有为空的部门。修复如下: (d.DeptName == null)? string.Empty : d.DeptName