私はこのようなコードを持っている:私たちは、コード内のいくつかの退屈な繰り返しを気づくことができる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。
[OK]を、ジョンスキートは私の呼び出しが異なって見えるべきであると、そこに問題の間違った何かがだ、と私は同意伝え、私はこれらの呼び出しが可能だと思う:
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
[Pro Linq](http://www.amazon.com/Pro-LINQ-Language-Integrated-Experts/ dp/1590597893)。 –