使用LINQ从两个表中提取数据

时间:2011-11-23 11:34:59

标签: c# linq

我有两个表OrderHead和Labeldata,这两个表都没有任何关系。我想从这两个表中提取数据,我使用的是LINQ:

var ODetail = (
    from o in oContext.OrderHeads
    join l in oContext.LIT04LABELDATA on o.CUSTORD equals l.ORDERNUMBER
    where l.ORDERNUMBER == oNumber
    select new { LIT04LABELDATA = l, OrderHead = o }
).ToList();

我想使用这两个表中的数据,但我不知道如何从变量oDetail中提取数据,有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您正在创建一个匿名类型,它有两种类型作为其属性。与SQL查询不同,此处保留层次结构,因此oDetail将不包含CUSTORD,oDetail.OrderHead将包含CUSTORD。您需要查询为:

foreach(var detail in ODetail)
{
    Console.WriteLine( detail.LIT04LABELDATA.ORDERNUMBER + "   " + detail.ORDERHEAD.CUSTORD );
}

答案 1 :(得分:0)

var b=oContext.OrderHeads
.Where(p => oContext.LIT04LABELDATA.Where(q=>q.ORDERNUMBER==oNumber)
      .Select(q => q.ORDERNUMBER).Contains(p.CUSTORD))
.Select(p => new
{
    LIT04LABELDATA = oContext.LIT04LABELDATA
       .FirstOrDefault(q=>q.ORDERNUMBER==p.CUSTORD),
    OrderHead =p,
}).ToList();