我有一个基于两个外键的表。一个是memberID
,第二个是movieID
。我需要从此表中获取连接这两个行并从同一行RentDays
获取的行,该行是int
。
我这样做了,但我觉得它不好:
public int GetRentDays(int memberID, string movieID)
{
var movieRentDays =
from Rents in videoLibDB.Rents
where Rents.MemberID == memberID && Rents.MovieID == movieID
select Rents.RentDays;
return movieRentDays ;
}
答案 0 :(得分:0)
您的代码可以使用,但您可以考虑加入构造
var movieRentDays= from Rents in videoLibDB.Rents
join member in memberTable
on Rents.MemberID equals memberTable.memberID
join movie in movieTable
on Rents.MemberID equals movieTable.movieID
select Rents.RentDays;
var singleRentDay = movieRentDays.FirstOrDefault();
答案 1 :(得分:0)
您正在选择IEnumerable<int>
并返回相同的变量,即使您的方法签名表明您要返回int
。如果你只想返回一个int
,并且你只想要LINQ语句中的一个,你可以这样做:
return
(from Rents in videoLibDB.Rents
where Rents.MemberID == memberID && Rents.MovieID == movieID
select Rents.RentDays).FirstOrDefault();
答案 2 :(得分:0)
试试这个:
public int GetRentDays(int memberID, string movieID)
{
var movieRentDays = videoLibDB.Rents.FirstOrDefault
(r => r.MemberID == memberID && r.MovieID == movieID);
return movieRentDays == null || movieRentDays.HasValue ? 0
: movieRentDays.RentDays.Value;
}