小编gen*_*nub的帖子

如何在C#中定义自己的LINQ构造?

我有这样的代码:

class PacketDAO{
    //...
    public void UpdatePacketStatus(Guid packetID, Status status)
    {
        using (var ctx = new DataContext())
        {
            var packet = ctx.Packet.SingleOrDefault(p => p.PacketID == packetID);
            packet.Status = status;
            ctx.SubmitChanges();
        }
    }

    public void UpdatePacketTime(Guid packetID, DateTime? time)
    {
        using (var ctx = new DataContext())
        {
            var packet = ctx.Packet.SingleOrDefault(p => p.PacketID == packetID);
            packet.Time = time;
            ctx.SubmitChanges();
        }
    }
    //...
}       
Run Code Online (Sandbox Code Playgroud)

我们可以注意到代码中有些无聊的重复.

因此,以一种我们可以负担得起的方式编写一个通用的方法Update会更好:

packet.Update<Guid, Packet>(guid, p => p.Time = DateTime.Now);
packet.Update<Guid, Packet>(guid, p => p.Status = Status.Ok);
Run Code Online (Sandbox Code Playgroud)

请告诉我,是否可以编写这样的方法?

我可以从中学到哪本书? …

c# linq

7
推荐指数
1
解决办法
202
查看次数

标签 统计

c# ×1

linq ×1