Linq泛型方法

本文关键字:泛型方法 Linq | 更新日期: 2023-09-27 18:25:28

如何使用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.
}

提前感谢

Linq泛型方法

首先,您需要一个接口

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

让你的类车辆,建筑实现接口。

以下是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
    }