Cod*_*iac 1 linq-to-sql asp.net-mvc-3
我有以下代码来更新用户列
public void UpdateLastModifiedDate(string username)
{
using (AppEntities db = new AppEntities())
{
var result = from u in db.Users where (u.UserName == username) select u;
if (result.Count() != 0)
{
var dbuser = result.First();
dbuser.LastModifiedDate = DateTime.Now;
db.SaveChanges();
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于UpdateLastLogOutDate,UpdateLastLoginDate,我有其他两个函数几乎与上面的函数相同.所以,我决定为所有人定义单个函数来更新Last Date,如:
public void UpdateLastDate(string username, string ColumnName);
Run Code Online (Sandbox Code Playgroud)
在这里,我不能像这样放置ColumnName变量:
dbuser.ColumnName = DateTime.Now;
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以使用LINQ来做到这一点
您可以像这样定义方法:
public void Update(string username, Action<User> action)
{
using (AppEntities db = new AppEntities())
{
var result = from u in db.Users where (u.UserName == username) select u;
if (result.Count() != 0)
{
var dbuser = result.First();
action(dbuser);
db.SaveChanges();
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在这种方法可能有不同的用法:
Update("john", user => user.LastModifiedDate = DateTime.Now);
Update("smith", user => user.UpdateLastLogOutDate = DateTime.Now);
Update("admin", user =>
{
user.LastModifiedDate = DateTime.Now;
user.UpdateLastLogOutDate = DateTime.Now;
});
Run Code Online (Sandbox Code Playgroud)
但是如果在编译时不知道表达式,你可以看一下动态LINQ.
| 归档时间: |
|
| 查看次数: |
5297 次 |
| 最近记录: |