0

我刚开始学习Linq。我写了一些例子,但有一个疑问我无法解决。

我正在使用Northwind数据库,我只是使用调用的工具SqlMetal来进行所有建模。

现在我刚刚写了以下查询:

var q = from c in db.Customers
        from o in c.Orders
        where c.City == "London"
        select new { c, o };

我知道这个查询给我带来了一组结果数据,其中包含给定条件 ( )的所有列Customers和表。但我的问题是:Ordersc.City == "London"

执行该查询后,如何获取列的值Customers.CustomerIDOrders.OrderIDFROM THE VARIABLE q

也许这是一个愚蠢的问题,但我已经为此苦苦挣扎了几个小时,在此先感谢。

4

2 回答 2

3
var theSoleItem = q.First();
theSoleItem.CustomerID
theSoleItem.OrderID

此外,如果这是您关心的唯一列,那么您的初始查询会更快:

select new {c.CustomerID, o.OrderID}

您还可以随时更改名称:

select new {CustID = c.CustomerID, OrdID = o.OrderID}

如果不是直接引用属性,而是引用方法调用,则后者是唯一的选择。

于 2012-09-03T21:02:53.863 回答
1

变量 q 现在是一个匿名对象序列,其中包含两个对象:Customer 和 Order。您可以轻松地对其进行迭代:

foreach(var item in q)
{
    Console.WriteLine("CustomerID = " + item.CustomerID + " order ID = " + item.OrderID);
}
于 2012-09-03T21:07:24.937 回答