我刚开始学习Linq。我写了一些例子,但有一个疑问是我无法解决。
我正在使用Northwind
数据库,我刚刚使用了名为SqlMetal
的工具来进行所有建模。
现在我刚写了以下查询:
var q = from c in db.Customers
from o in c.Orders
where c.City == "London"
select new { c, o };
我知道这个查询带来了一组结果数据,其中包含给定条件(Customers
)的Orders
和c.City == "London"
表的所有列。但我的问题是:
执行该查询后,如何从变量Customers.CustomerID
中获取列Orders.OrderID
和q
的值?
也许这是一个愚蠢的问题但我已经在这几个小时内苦苦挣扎,提前谢谢。
答案 0 :(得分:3)
var theSoleItem = q.First();
theSoleItem.CustomerID
theSoleItem.OrderID
此外,如果这是您唯一关注的列,那么您的初始查询会更快:
select new {c.CustomerID, o.OrderID}
您也可以随时更改名称:
select new {CustID = c.CustomerID, OrdID = o.OrderID}
后者是唯一的选择,如果不是直接引用属性,则引用方法调用。
答案 1 :(得分:1)
变量q现在是一系列匿名对象,其中包含两个对象:Customer和Order。您可以轻松地迭代它:
foreach(var item in q)
{
Console.WriteLine("CustomerID = " + item.CustomerID + " order ID = " + item.OrderID);
}