使用LINQ查询进行排序问题并使用来自不同数据库的表进行连接

问题描述:

我在编写LINQ查询时遇到了问题。 这里的情景:使用LINQ查询进行排序问题并使用来自不同数据库的表进行连接

我有2个数据库:A和B 在数据库答:我有一个的TableX它具有以下字段:雇员ID,姓名,地址,电话,...,主动

在数据库B:我有具有以下字段的tableY:雇员ID,可见,订单

在数据表Y的记录数是在表X.小于或等于的记录数

基本上,我需要从表X中提取具有“可见”属性的表X中的员工记录(在表中Y)设置为True,并希望使用'Order'属性对它们进行排序。

这是我到目前为止有:

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返回的记录按照在表中输入的顺序排序(从最旧到最新)。

任何想法如何我可以修复我的查询。

感谢,

我重新写它作为一个单一查询:

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; 
+0

感谢您的快速回复!我尝试了你的建议,但是“.OrderBy(x => x.Order)”语句不起作用,因为“订单”列没有在tableX中定义:( – mustang888

+0

我已经更新了上面的示例以使用单个连接。 ,你在TableX的条目中进行选择,过滤掉所有非活动条目,然后在TableY的条目中进行选择,并将它们与它们的X对应关系进行匹配,最后,您可以订购并返回X值。 –