2012-07-24 55 views
-1

我是linq的新手,我有一个简单的问题。 我必须统计有多少书有用户。 我知道它很容易,但我不能这样做。Linq-To-Sql用户的计数书

//数据库

enter image description here

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(); 
} 

如何做到这一点?

+0

你想未归还的书籍('IsReturned = FALSE'),或者所有的书用户曾经借?或在日期范围内借阅的书籍数量? – Jamiec 2012-07-24 07:33:27

+0

“有多少书有用户”==>您的书籍环境在哪里,它看起来如何? (我无法看到任何关于你的链接) – Matten 2012-07-24 07:33:29

+0

嗨,欢迎来到SO!你有什么尝试过自己?你显然有一些代码的问题,否则你不会问这个问题,对吧? =) – 2012-07-24 07:51:17

回答

0

在你的模型中,似乎每一个借款都只有一本书与它相关联。如果是这样的话和书不能采取一次以上(这也应该是正确的),那么所有你需要做的是:

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

通过这种方式,你可以指望一个给定的用户假定所有借用他们都与一本书有关。

如果两个借阅可以有相同的书比你应该稍微重写此查询到这一点:

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

这样你会得到仅从用户用借来的1

ID唯一的书

仅计数未返回使用这种独特的书:

int count = db.Borrow.Where(x => x.UserID== 1 && x.IsReturned == false).Select(x => x.BookId).Distinct().Count(); 
+0

非常感谢你!另一个问题。如果我想查找列表中每个用户的书籍数量?不适用于一个号码UserId – user1547855 2012-07-25 08:44:52