如何从Linq中的查询中获取特定值

时间:2012-09-03 20:59:23

标签: c# sql linq

我刚开始学习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.CustomerID中获取列Orders.OrderIDq的值?

也许这是一个愚蠢的问题但我已经在这几个小时内苦苦挣扎,提前谢谢。

2 个答案:

答案 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);
}