使用Lambda表达式连接两个表

时间:2016-08-10 07:47:42

标签: c# lambda

我是Lambda表达的新手。我希望结合两个表和lambda Expression中的where子句的结果,查询运行正常但是如何在处理查询后得到变量的结果?

var Rental = db.AUCDATA_COUPONS.Join(db.AUCDATA_TENORS,
                     c => c.AUCDT_ID,
                     o => o.AUCDT_ID,
                     (c, o) => new { c, o })
               .Where(x => x.o.PRODUCT_ID == "SUKUK" && x.o.ISSUE_DATE == Convert.ToDateTime("02-MAR-12") && x.o.TENOR_ID == "03Y"
                   && x.c.AUCDT_ID == x.o.AUCDT_ID && x.c.COUPON_NXTDT == Convert.ToDateTime("21-NOV-15"))
              .Select(x => x.c.RENTAL_RATE);

2 个答案:

答案 0 :(得分:2)

$db.AUCDATA_COUPONS(其中IQueryable<T>是表示该表的类的类型)。您使用的扩展方法(例如TJoinWhere)会使用此Select并返回新的IQueryable<T>。< / p>

最后IQueryable<T>会返回Select(或IQueryable<int>,具体取决于double的类型。实际查询(lambdas)仅在您通过RENTAL_RATE迭代时执行。您可以使用IQueryable

执行此操作
foreach

也许更好的方法是将结果转换为列表或数组。这样,您只需执行一次查询,而不是一次又一次执行foreach(var rentalRate in Rental) 执行:

foreach

请注意,您可能需要将日期时间比较更改为

var list = Rental.ToList(); // results in an List<int>
// or
var array = Rental.ToArray(); // results in an int[]

x.o.ISSUE_DATE.Date == new DateTime(2012,3,2)

让查询正常工作。

答案 1 :(得分:1)

您已在变量中获得结果。但是,根据您要对其执行的操作,您可以在.ToArray()之后添加.ToList().Select(...)