简体   繁体   中英

Write query in Entity Framework

I have a query which I ran successfully in SQL Server Management Studio, which returns the table values shown in the screenshot

在此处输入图像描述

The query I used is:

SELECT tcoid, COUNT(*) ownleasetank 
FROM TankProfile
WHERE ownleasetank = 3  
GROUP BY tcoid

Now I'm using Entity Framework to make things easier in my sample project.

I used this method to return the table values as array object:

public async Task<Object>  GetLeaseInformationPrincipal()
{
        ISOTMSEntities context = new ISOTMSEntities();
        var testleaseinfo = from d in context.TankProfiles
                            join f in context.TankOperators
                            on d.tcoid equals f.tcoId
                            where (d.ownleasetank == 3)
                            select new { f.tcoName, d.ownleasetank } into x
                            group x by new { x.tcoName } into g
                            select new
                            {
                                tconame = g.Key.tcoName,
                                ownleasetank = g.Select(x => x.ownleasetank).Count()
                            };
        return testleaseinfo.ToList();
}

but it is not working properly. I also tried other ways, when I use where and groupby method in Entity Framework it doesn't working properly for me.

Does anybody know the solution for this?

It's very simple with LINQ methods:

context.TankProfiles
    .Where(t => t.ownleasetank = 3)
    .GroupBy(t => t.tcoid)
    .Select(g => new {g.Key, g.Count()})
    .ToArray();

I have no idea why in your C# version of the query you have such opeartions such join , while your SQL query is very simple. You have to rethink that:)

var c = from t in context.TankProfile
        where t.ownleasetank == 3
        group t by t.tcoid into g
        select new { tcoid=g.Key, ownleasetank=g.Select(x => x.ownleasetank).Count() };
return c.ToList();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM