2

複雑な SQL クエリと思われるものがあり、それを LINQ クエリに変換する必要があります。しかし、私は LINQ の初心者であり、これを機能させる方法がわかりません。インターネットで検索してみましたが、まだ機能しません。

これが私のSQLクエリです:

SELECT
    a.empid,
    CAST(IF(COUNT(*)  > 10,FLOOR(COUNT(*) / 10),1) AS CHAR(100)) lim,
    CAST(GROUP_CONCAT(internalid) AS CHAR) internalIDS
FROM tblLogs a
INNER JOIN
    (
        SELECT 
            DISTINCT empid 
        FROM tblLogs
        WHERE IsDeleted = 0 AND DateAdded = 2013-04-18
    ) b ON  a.empid = b.empid
WHERE IsDeleted = 0 AND Remarks NOT LIKE '%proxy date used%' AND DateAdded = 2013-04-18 AND RecType = 8
GROUP BY empid;

やあ。これが更新された linq クエリですが、Linq to Entities が string.join メソッドを認識しないというエラーが返されます。これの何が問題なのですか?ありがとう。:)

var rows = from rec in context.tblWMSLogs join rec1
                        in context.tblWMSLogs.Where(t => t.DateAdded == refDate2 && t.IsDeleted == 0)
                        on rec.EmpID equals rec1.EmpID
                    where rec.DateAdded == refDate2 && rec.IsDeleted == 0 && !rec.Remarks.Contains("proxy date used") && rec.RecType == recType
                    group rec by rec.EmpID into g
                    select new WMSRandomViewModel
                    {
                        EmpID = g.Key,
                        Lim = (g.Count() > 10 ? Math.Ceiling(g.Count() / 10d) : 1),
                        InternalIDs = string.Join(",", g.OrderBy(s => s.InternalID).Select(s => s.InternalID))
                    };//string.Join(",", g.OrderBy(s => s.InternalID).Select(s => s.InternalID))
            //return rows.ToList();
            return rows.ToList();
4

1 に答える 1

1

これはあなたが望むものですか?

var rows =
        from rec in context.tblLogs.AsEnumerable()
        join rec1 
            in context.Where(t => t.DateAdded == refDate && t.IsDeleted == 0)
            on rec.EmpID equals rec1.EmpID
        where rec.DateAdded == refDate && rec.IsDeleted == 0 && !rec.Remarks.Contains("proxy date used") && rec.RecType == recType
        group rec by rec.EmpID into g
        select new
        {
            g.Key,
            lim = (g.Count() > 10 ? Math.Floor(g.Count() / 10d) : 1).ToString(),
            InternalIDS = string.Join("", g.OrderBy(s => s.InternalId).Select(s => s.InternalId))
        };

さて、私の質問は、

SQLに内部結合があるのはなぜですか? 内部結合の where 句をメイン クエリの where 句に移動できますか

于 2013-04-22T04:56:10.870 に答える