Tôi có một mã như thế này:Làm thế nào để xác định cấu trúc LINQ của riêng tôi trong C#?
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();
}
}
//...
}
Chúng ta có thể nhận thấy một số sự lặp lại nhàm chán trong các mã.
Vì vậy, nó sẽ được tốt đẹp để viết một phương thức Update chung trong một cách mà chúng tôi có thể đủ khả năng mình để viết một cái gì đó như thế này:
packet.Update<Guid, Packet>(guid, p => p.Time = DateTime.Now);
packet.Update<Guid, Packet>(guid, p => p.Status = Status.Ok);
Nói cho tôi biết, làm ơn, là nó có thể để viết một phương pháp như vậy?
Tôi có thể tìm hiểu sách từ đâu?
(Tôi đã tìm thấy chỉ là một ví dụ gần: http://msdn.microsoft.com/en-us/library/cc981895.aspx, nhưng nó không phải là đủ rõ ràng làm thế nào để lấy được phương thức Update của tôi từ đó)
Cảm ơn bạn.
UPD.
Ok, Jon Skeet nói có điều gì đó sai trong câu hỏi, và tôi đồng ý, rằng cuộc gọi của tôi nên nhìn khác nhau, tôi nghĩ rằng những cuộc gọi có thể xảy ra:
packet.Update<Packet>(p => p.packetID == guid, p => p.Time = DateTime.Now);
packet.Update<Packet>(p => p.packetID == guid, p => p.Status = Status.Ok);
Có phương pháp giống như LINQ cập nhật dữ liệu là một chút không tự nhiên – zerkms
Một cuốn sách tôi muốn đề xuất là [Pro Linq] (http://www.amazon.com/Pro-LINQ-Language-Integrated-Experts/ dp/1590597893). –