我有這樣的代碼:如何在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