-1

私はlinqが初めてで、簡単な問題があります。ユーザーが何冊の本を持っているかを数えなければなりません。私はそれが簡単だと知っていますが、私はこれを行うことができません。

//データベース

ここに画像の説明を入力

public List<UserViewModel> GetAllUsers()
{
    var result = from u in databaseContext.User
                    select new UserViewModel
                    {
                        UserId = u.UserId,
                        LastName = u.LastName,
                        FirstName = u.FirstName,
                        BirthDate = u.BirthDate,
                        Email = u.Email,
                        Phone = u.Phone,
                        AddDate = u.AddDate,
                        ModifiedDate = u.ModifiedDate,
                        IsActive = u.IsActive,  

                    };
    return result.ToList();
}

これを行う方法?

4

1 に答える 1

0

あなたのモデルでは、すべての借用に1冊の本が関連付けられているようです。それが事実であり、本を複数回取ることができない場合(これも正しいはずです)、あなたがする必要があるのは次のことだけです:

int count = context.Users.First(x=>x.UserId = 1).Borrow.Count();

このようにして、特定のユーザーのすべての借用を、それらがすべて本に関連付けられていると仮定してカウントできます。

2つの借用が同じ本を持つことができる場合は、このクエリを少し書き直してください。

int count = db.Borrow.Where(x => x.UserID== 1).Select(x => x.BookId).Distinct().Count();

このようにして、IDが1のユーザーから借りた一意の本のみを取得します。

返されない一意の本のみをカウントするには、次を使用します。

int count = db.Borrow.Where(x => x.UserID== 1 && x.IsReturned == false).Select(x => x.BookId).Distinct().Count();
于 2012-07-24T08:14:04.737 に答える