Linq通用方法

时间:2012-02-23 10:44:57

标签: c# linq linq-to-sql lambda

如何使用linq为具有不同命名法的表创建一个通用的Update方法。 PS我只需要更新两个字段(浮动两个),但它们的名称从一个表到另一个不同,表的id名称也各不相同

假设我在DataContext中有这些表:

Person   {ID(key), Name, X(float), Y(float)}
Vehicle  {Code(key), Model, Latitude(float), Longitude(float)}
Building {Name(key), Model, Latitude1(float), Longitude1(float)}

* 这些表是虚构的,但代表了我的场景。我无法更改表字段的名称,以实现标准命名。 (我不创建数据库)。

我需要在Linq中制作一个通用方法。像这样:

public void UdpateCoordinates(tableName, idOfTable, fieldLatitude, fieldLongitude)
{
  //And make a Update here of the fields (fieldLatitude, fieldLongitude).
  //Example person would be fields X and Y the ones to update.
}

提前致谢

1 个答案:

答案 0 :(得分:0)

首先,您需要一个界面

public interface IPosition {
   public int ID {get ;}
   public Latitude {get; set;}
   public Longitude {get; set;}
}

制作课程Vehicle,Building实现界面。

以下是UdpateCoordinates方法的可能版本:

    public void UdpateCoordinates<T>(IEnumerable<T> table, int ID, float latitude, float longitude ) where T: IPosition {
       var entity = table.Where(x.ID == ID).FirstOrDefault();
       if (entity != null){
           entity.Latitude = longitude ;
           entity.Longitude = longitude ;
       } 

       //Save the entity here
    }