0

このクエリをlinqで記述しようとしています

SELECT        dbo.Tbl_Users.ID, COUNT(dbo.Tbl_Inputs.ID) AS Inputs
FROM            dbo.Tbl_Users LEFT JOIN
                          dbo.Tbl_Inputs ON dbo.Tbl_Inputs.User_ID = dbo.Tbl_Users.ID
GROUP BY dbo.Tbl_Users.ID

これは私の linq コードです。ユーザー ID とユーザーが Tbl_Inputs で行った入力の数を保持するクラス User() を作成しました。

List<User> GetAllUsers()
        {
            List<User> userlist = new List<User>();
            userlist = (from u in Data.Tbl_Users
                        join i in Data.Tbl_Inputs on u.ID equals i.User_ID
                        into Joined
                        from p in Joined.DefaultIfEmpty()
                       group p by new { u.ID }
                       into grp select new User()
                       {
                            Id = grp.Key.ID,
                            Inputs = grp.Count()
                       }).ToList();

            return userlist;
        }

問題は、入力が 0 の場合に 1 を返すことです。

それを理解することはできません。

ありがとう

4

2 に答える 2

3

カウントを取得するときに null の子をチェックする必要があると思います。行を以下に置き換えてみてください。

Inputs = grp.Count(t=>t.User_ID != null)
于 2013-11-15T10:30:25.940 に答える