我有这样的代码:如何在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();
}
}
//...
}
我们可以看到在代码中的一些无聊的重复。
所以,这将是很好写的方式,我们能买得起自己来写这样的一个通用的方法更新:
packet.Update<Guid, Packet>(guid, p => p.Time = DateTime.Now);
packet.Update<Guid, Packet>(guid, p => p.Status = Status.Ok);
请告诉我,是有可能写出这样的方法?
我可以从中学习哪本书?
(我只找到一个接近例如:http://msdn.microsoft.com/en-us/library/cc981895.aspx,但它是不够清楚如何推导从我的更新方法)
谢谢。
UPD。
好吧,乔恩斯基特告诉有什么不对的问题,我同意,我的电话应该是不同的,我觉得这些电话是可能的:
packet.Update<Packet>(p => p.packetID == guid, p => p.Time = DateTime.Now);
packet.Update<Packet>(p => p.packetID == guid, p => p.Status = Status.Ok);
拥有类似LINQ的方法更新数据有点不自然 – zerkms 2012-03-31 12:46:50
我推荐的一本书是[Pro Linq](http://www.amazon.com/Pro-LINQ-Language-Integrated-Experts/ DP/1590597893)。 – 2012-03-31 12:47:11