我是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);
答案 0 :(得分:2)
$
是db.AUCDATA_COUPONS
(其中IQueryable<T>
是表示该表的类的类型)。您使用的扩展方法(例如T
,Join
和Where
)会使用此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(...)
。