使用linq计算不同表中的不同字段

时间:2012-08-07 07:40:15

标签: linq linq-to-sql

我有4张桌子:

Foreign Key----FK
Primary Key----PK

ticket(id,FK_ticketopenby,FK_closeby,FK_createby,FK_tickettype)
ticketcategoies(PK_ID,name,ticketid)
user(name,PK_id) 
usertype(PK_id,designation,FK_userid)

用户ID为外键(FK)为FK_closeby,FK_createby,FK_tickettype

用户是管理员或客户 票证是后续或用户

要求linq查询结果

-----------------------------------------------------------------
| Usertype | TicketType | Totalopen | TotalClose | TotalCreated |
-----------------------------------------------------------------
|    admin |   FollowUP |       324 |       2323 |          232 |
-----------------------------------------------------------------

1 个答案:

答案 0 :(得分:0)

你的问题有点薄,但这就是我认为你要问的答案。

我假设您使用的是像Linq-to-SQL或EF这样的ORM,并且每个表都有一个实体。

目前尚不清楚票证类型是如何在您的模型中表示的,所以我还没有加入该实体。

context.Tickets.Join(
        context.UserTypes,
        t => t.TicketOpenBy, 
        ut => ut.UserId,
        (t, ut) => new
            {
                Usertype = ut.Designation,
                TicketType = t.TicketType,
                Open = (t.TicketOpenBy ?? 0) > 0 ? 1 : 0,
                Closed = (t.CloseBy ?? 0) > 0 ? 1 : 0,
                Created = (t.CreateBy ?? 0) > 0 ? 1 : 0
            })
    .GroupBy(
        t => new { t.Usertype, t.TicketType },
        t => new
            {
                t.Usertype,
                t.TicketType,
                TotalOpen = t.Sum(t => t.Open),
                TotalClosed = t.Sum(t => t.Closed),
                TotalCreated = t.Sum(t => t.Created),
            });

如果这与您正在寻找的答案完全不同,则需要为您的问题添加清晰度和细节。