2009-08-10 94 views
11

我想返回自特定日期以來新用戶的計數。用linq-to-sql返回計數

用戶表具有:UserID,用戶名,dateJoined。

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

這在linq-to-sql中看起來如何?

你可以使用關鍵字COUNT?

回答

1

我假設你有一個名爲users的IEnumberable列表和一些名爲somedate的變量。

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

這將會努力反對任何IEnumberable名單不僅僅是LINQ to SQL的

+1

但應該指出,這只是調用擴展方法。它實際上並不是LINQ(從某種意義上說,LINQ是用於查詢的語言語法;您只是使用LINQ使用的擴展方法)。沒有什麼不對,只值得注意。 – 2009-08-10 14:26:21

+1

你不需要「Where()」。只需將lambda表達式放在「Count()」中即可。 – Suncat2000 2013-02-15 21:06:10

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

你可以走兩條路線:

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

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

兩者是等價,它真的可以歸結爲亞光呃個人喜好。

+2

我認爲第一個不編譯,因爲它需要選擇,但我建議第二個。 – 2009-08-10 14:30:50

+1

您可以通過一次調用Count()來完成第二個示例。 int count = context.Users.Count(x => x.datJoined> date); – 2014-07-24 07:24:09

+1

第一個和現在一樣正常工作,看起來並沒有被編輯過。 – nasch 2015-10-02 00:29:05