Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ到实体类似代码_C#_Entity Framework_Linq_Linq To Entities - Fatal编程技术网

C# LINQ到实体类似代码

C# LINQ到实体类似代码,c#,entity-framework,linq,linq-to-entities,C#,Entity Framework,Linq,Linq To Entities,我有类似的LINQ到实体请求: ComdataFuelDetailVM model = (from i in db.ComdataFuels where i.ID == id.Value select new ComdataFuelDetailVM() {

我有类似的LINQ到实体请求:

ComdataFuelDetailVM model = (from i in db.ComdataFuels
                                 where i.ID == id.Value
                                 select new ComdataFuelDetailVM()
                                 {
                                     ID = i.ID,
                                     CardNo = i.CardNo,
                                     City = i.City,
                                     CompanyId = i.CompanyId,
                                     DriverId = i.DriverId,
                                     DriverName = i.DriverName,
                                     EmployeeNo = i.EmployeeNo,
                                     Fees = i.Fees,
                                     GalPrice = i.GalPrice,
                                     NoOfGal = i.NoOfGal,
                                     OwnerOp = i.OwnerOp,
                                     PayoutRebate = i.PayoutRebate,
                                     Rebate = i.Rebate,
                                     State = i.State,
                                     TotalCost = i.TotalCost,
                                     TransDate = i.TransDate,
                                     TransTime = i.TransTime,
                                     TruckNo = i.TruckNo,
                                     TruckStopCode = i.TruckStopCode,
                                     TruckStopInvoiceNo = i.TruckStopInvoiceNo,
                                     TruckStopName = i.TruckStopName,
                                     UnitNo = i.UnitNo
                                 }).FirstOrDefault();


ComdataFuelDeleteVMmodel = (from i in db.ComdataFuels
                               where i.ID == id.Value
                               select new ComdataFuelDeleteVM()
                               {
                                   ID = i.ID,
                                   CardNo = i.CardNo,
                                   City = i.City,
                                   CompanyId = i.CompanyId,
                                   DriverId = i.DriverId,
                                   DriverName = i.DriverName,
                                   EmployeeNo = i.EmployeeNo,
                                   Fees = i.Fees,
                                   GalPrice = i.GalPrice,
                                   NoOfGal = i.NoOfGal,
                                   OwnerOp = i.OwnerOp,
                                   PayoutRebate = i.PayoutRebate,
                                   Rebate = i.Rebate,
                                   State = i.State,
                                   TotalCost = i.TotalCost,
                                   TransDate = i.TransDate,
                                   TransTime = i.TransTime,
                                   TruckNo = i.TruckNo,
                                   TruckStopCode = i.TruckStopCode,
                                   TruckStopInvoiceNo = i.TruckStopInvoiceNo,
                                   TruckStopName = i.TruckStopName,
                                   UnitNo = i.UnitNo
                               }).FirstOrDefault();

ComdataFuelDetailVM和ComdataFuelDeleteVM具有相同的属性(但用作不同视图的视图模型):

任何人都希望编写一个方法,该方法返回如下表达式:

private Expression<Func<ComdataFuel, T>> GetPictureExpression<T>()
{
    Expression<Func<ComdataFuel, T>> projection = i =>
        new T()
        {
            ID = i.ID,
            CardNo = i.CardNo,
            City = i.City,
            CompanyId = i.CompanyId,
            DriverId = i.DriverId,
            DriverName = i.DriverName,
            EmployeeNo = i.EmployeeNo,
            Fees = i.Fees,
            GalPrice = i.GalPrice,
            NoOfGal = i.NoOfGal,
            OwnerOp = i.OwnerOp,
            PayoutRebate = i.PayoutRebate,
            Rebate = i.Rebate,
            State = i.State,
            TotalCost = i.TotalCost,
            TransDate = i.TransDate,
            TransTime = i.TransTime,
            TruckNo = i.TruckNo,
            TruckStopCode = i.TruckStopCode,
            TruckStopInvoiceNo = i.TruckStopInvoiceNo,
            TruckStopName = i.TruckStopName,
            UnitNo = i.UnitNo
        };
    return projection;
}
私有表达式GetPictureExpression()
{
表达式投影=i=>
新T()
{
ID=i.ID,
CardNo=i.CardNo,
城市,
CompanyId=i.CompanyId,
DriverId=i.DriverId,
DriverName=i.DriverName,
EmployeeNo=i.EmployeeNo,
费用=i.费用,
GalPrice=i.GalPrice,
NoOfGal=i.NoOfGal,
OwnerOp=i.OwnerOp,
PayoutRebate=i.PayoutRebate,
返利=i.返利,
状态,状态,
总成本=即总成本,
TransDate=i.TransDate,
TransTime=i.TransTime,
TruckNo=i.TruckNo,
TruckStopCode=i.TruckStopCode,
TruckStopInvoiceNo=i.TruckStopInvoiceNo,
TruckStopName=i.TruckStopName,
UnitNo=i.UnitNo
};
回归投影;
}

但是我无法创建t对象…

如果ComdataFuelDetailVM和ComdataFuelDeleteVM具有相同的属性,那么只需为这些类编写包含所有这些属性的公共接口或基类,并在方法中使用以下构造:

private Expression<Func<ComdataFuel, T>> GetPictureExpression<T>() where T : ICommonInterface
私有表达式GetPictureExpression(),其中T:ICommonInterface

如果ComdataFuelDetailVM和ComdataFuelDeleteVM具有相同的属性,则只需为这些类编写包含所有这些属性的公共接口或基类,并在方法中使用以下构造:

private Expression<Func<ComdataFuel, T>> GetPictureExpression<T>() where T : ICommonInterface
私有表达式GetPictureExpression(),其中T:ICommonInterface
私有表达式GetPictureExpression(),其中T:ComdataFuelAbstractVM,new()
要创建T,必须添加new()约束

私有表达式GetPictureExpression(),其中T:ComdataFuelAbstractVM,new()

要创建T,您必须添加new()约束,这不是规则。这些类可以有不同的超类,但具有相同的属性。。。另外,如果类有一点不同(即一个属性),我希望有一个灵活的解决方案,etcSo只对它们使用公共接口,而不是公共超类。公共接口将包含这些类共享的所有属性,它将允许以我提供的方式编写泛型方法。接口将增加子类,并增加添加/删除新属性的难度。我不认为有其他方法可以这样做。这不是规则。这些类可以有不同的超类,但具有相同的属性。。。另外,如果类有一点不同(即一个属性),我希望有一个灵活的解决方案,etcSo只对它们使用公共接口,而不是公共超类。公共接口将包含这些类共享的所有属性,它将允许以我提供的方式编写泛型方法。接口将增加子类,并增加添加/删除新属性的困难。我不认为还有其他方法可以做到这一点
private Expression<Func<ComdataFuel, T>> GetPictureExpression<T>() where T: ComdataFuelAbstractVM, new()