1

ユーザーの列を更新するための次のコードがあります

 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();
                }
            }
        }

UpdateLastLogOutDate、UpdateLastLoginDate については、上記の機能とほぼ同じ機能をもう 2 つ持っています。そこで、Last Date を次のように更新する単一の関数を定義することにしました。

public void UpdateLastDate(string username, string ColumnName);

ここでは、次のように ColumnName 変数を配置することはできません。

dbuser.ColumnName = DateTime.Now;

LINQ を使用してこれを行う他の方法はありますか

4

2 に答える 2

6

次のようにメソッドを定義できます。

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();
        }
    }
}

そして今、このメソッドのさまざまな使用法がある可能性があります:

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;
});

ただし、コンパイル時に式が不明な場合は、動的LINQを確認してください。

于 2012-06-21T08:05:29.620 に答える
1

エンティティのインスタンスをパラメーターとして送信することで、この方法でコードを記述することもできます。

public void UpdateLastModifiedDate(Entityclassname ent) //[like if table name is item then Entityclassname should be items etc..]
{   
  using (AppEntities db = new AppEntities())            
  {      
    var result = from u in db.Users where (u.UserName == ent.username) select u;   
    if (result.Count() != 0)         
      {                   
           var dbuser = result.First();        
             dbuser.LastModifiedDate = DateTime.Now; 
             dbuser.UpdateLastLogOutDate=ent.UpdateLastLogOutDate ;
             db.SaveChanges();    
      }
  } 
}
于 2012-10-11T01:02:11.630 に答える