我有一个基于两个外键的表

时间:2012-11-06 19:29:01

标签: c# asp.net

我有一个基于两个外键的表。一个是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 ;
}

3 个答案:

答案 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();

请参阅FirstOrDefaultSingleOrDefaultSingle

答案 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;
}