如何访问LINQ结果

Mar*_*las 1 c# linq

我是新手使用LINQ,我无法访问此查询的结果.目标是在其他地方使用结果的值.

var orderFacts = new OrdersFactsController().getOrderFacts(base.ModuleId);
var f = (from x in orderFacts 
         where x.Language == lang 
         select new 
                { 
                  x.PRN, 
                  x.ProdCode, 
                  x.KeyCodes,  
                  x.JobNumber, 
                  x.OfferingCode, 
                  x.Currency, x.ID, 
                  x.OrderSourceCode 
                });
Run Code Online (Sandbox Code Playgroud)

查询返回结果,因为我可以在调试时看到它们,但我不知道如何使用结果.

我认为它会像以下一样容易:

var prn = f.PRN
Run Code Online (Sandbox Code Playgroud)

但似乎并非如此.

Wou*_*ort 6

类型f不是您选择的投影属性的单个值.

相反的类型fIEnumerable<T>哪里T是你的新创建的对象(你可以用你的鼠标悬停在Visual Studio中看到这个变种).如果您确定只有一个结果对象可以使用SingleOrDefault(),f就像这样:

var obj = f.SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)

如果f可以包含多个对象,则可以使用foreach语句对它们进行迭代:

foreach(var obj in f)
{
    var prn = obj.PRN;
}
Run Code Online (Sandbox Code Playgroud)