0

2つの外部キーに基づくテーブルがあります。1つは、、memberID2つ目はmovieIDです。このテーブルから、これら2つを接続する行を取得し、同じ行から取得する必要があります。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 ;
}
4

3 に答える 3

0

メソッドシグネチャが を返していると言っているにもかかわらず、を選択しIEnumerable<int>て同じ変数を返していますint。1 つだけを返したい場合intで、LINQ ステートメントから 1 つだけを期待している場合は、次のようにすることができます。

return
    (from Rents in videoLibDB.Rents
    where Rents.MemberID == memberID && Rents.MovieID == movieID
    select Rents.RentDays).FirstOrDefault();

FirstOrDefaultSingleOrDefault、およびSingleを参照してください。

于 2012-11-06T19:34:18.297 に答える
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;
}
于 2012-11-06T19:48:41.357 に答える
0

コードは機能しますが、JOIN 構造を検討できます

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();
于 2012-11-06T19:33:33.077 に答える