我需要实现3个公共方法,它们都依赖于相同的初始联接。下面描述的解决方案是否有效?
下面的代码是一个例子,真正的东西要复杂得多,这就是我想重用它的原因。
private Tuple<Customer,Order> GetCustomerOrders()
{
from c in customers
join o in orders
on c.customerid equals o.customerid
select Tuple.Create(c, o)
}
public MyCustomerOrder GetCustomerOrder(int customerId)
{
return (from co in GetCustomerOrders()
where co.Item1.customerid == customerId
select new MyCustomerOrder(co.Item1, co.Item2)).FirstOrDefault();
}
public IEnumerable<MyCustomerOrder> GetCustomerOrders()
{
return from co in GetCustomerOrders()
orderby co.Item1.Name
select new MyCustomerOrder(co.Item1, co.Item2);
}
问题是,元组是否破坏了查询?换句话说,这会在生成的SQL查询中结束吗
where co.Item1.customerid == customerId
?