【发布时间】:2013-07-03 18:43:36
【问题描述】:
我在编写 LINQ 查询时遇到问题。 场景如下:
我有 2 个数据库:A 和 B 在数据库 A 中:我有一个 tableX,其中包含以下字段:员工 ID、姓名、地址、电话、...、活动
在数据库 B 中:我有一个 tableY,其中包含以下字段:Employee ID、Visible、Order
Y表的记录数小于等于X表的记录数。
基本上,我需要从表 X 中提取属性“可见”(在表 Y 中)设置为 True 并希望使用“订单”属性对它们进行排序的员工记录。
这是我目前所拥有的:
ADataContext dbA = new ADataContext();
BDataContext dbB = new BDataContext();
//Get the list of records from tableY where 'Visbile' is set to True
var List = dbB.tableY
.Where(x => x.Visible == true).OrderBy(x => x.Order)
.ToList();
//Extract the list of employee IDs
IEnumerable<int> ids = List.Select(x => x.EmployeeID).Distinct();
var employees = dbA.tableX
.Where(x => ids.Contains(x.EmployeeID) && x.Active == true)
.ToList();
我能够获得正确的员工列表,但无法弄清楚如何在 tableX 上应用排序顺序(存在于 tableY 中) 目前,无论 tableY 中指定的顺序如何,从 tableX 返回的记录都会按照它们在表中输入的顺序进行排序(从最旧到最近)。
关于如何修复我的查询的任何想法。
谢谢,
【问题讨论】:
标签: linq sorting join linq-to-entities