2009-08-10 48 views
11

Tôi muốn trả về số lượng người dùng mới kể từ một ngày cụ thể.Trả lại một số đếm với linq-to-sql

Bảng người dùng có: UserID, tên người dùng, dateJoined.

SELECT COUNT(USERID) 
FROM Users 
where dateJoined > @date 

Điều này trông như thế nào trong linq-to-sql?

Bạn có thể sử dụng từ khóa COUNT không?

Trả lời

1

Tôi giả sử bạn có một danh sách IEnumberable được gọi là người dùng và một số biến được gọi là somedate.

int count = users 
    .Where<User>(i => i.dateJoined > someDate) 
    .Count<User>(); 

này sẽ làm việc với bất kỳ danh sách IEnumberable không chỉ LINQ to SQL

+1

Tuy nhiên, cần lưu ý rằng đây chỉ là cách gọi một phương thức mở rộng. Nó không thực sự là LINQ (theo nghĩa LINQ là một cú pháp ngôn ngữ để truy vấn; bạn chỉ sử dụng các phương thức mở rộng mà LINQ sử dụng). Không có gì sai với điều đó, đáng chú ý. –

+1

Bạn không cần "Where()". Chỉ cần đặt biểu thức lambda trong "Count()". – Suncat2000

1
(from u in context.Users where u.dateJoined > date select u).Count() 
13

Bạn có thể đi hai con đường:

var count = (from u in context.Users where u.datJoined > date select u).Count(); 

hoặc

var count = context.Users.Where(x => x.datJoined > date).Count(); 

Cả hai đều tương đương , nó thực sự sôi xuống er sở thích cá nhân.

+2

Tôi nghĩ rằng người đầu tiên không biên dịch vì nó đòi hỏi một lựa chọn, nhưng tôi muốn giới thiệu thứ hai. –

+1

Bạn có thể thực hiện ví dụ thứ hai với một cuộc gọi duy nhất tới Count(). int count = context.Users.Count (x => x.datJoined> ngày); –

+1

Cách đầu tiên hoạt động tốt như hiện tại và có vẻ như nó chưa được chỉnh sửa. – nasch

Các vấn đề liên quan