0

我在编写 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 返回的记录都会在输入时进行排序在表中(从最旧到最近)。

任何想法如何解决我的查询。

谢谢,

4

1 回答 1

0

我把它全部重写为一个查询:

var employees =
  from x in dbA.tableX
  where x.Active
  from y in dbB.tableY
  where x.EmployeeID == y.EmployeeID
  orderby y.Order
  select x;
于 2013-07-03T19:16:06.327 回答