Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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# 来自SP的Linq到SQL复杂自定义对象_C#_Linq To Sql - Fatal编程技术网

C# 来自SP的Linq到SQL复杂自定义对象

C# 来自SP的Linq到SQL复杂自定义对象,c#,linq-to-sql,C#,Linq To Sql,我有一个Linq-to-SQL模型,它在某些地方使用存储过程返回需要更复杂SQL的对象。这一切都很好 我现在需要从一个SP返回一个自定义对象,该SP还封装了一个Linq到SQL对象。例如,我有一个名为Employee的类,它基于Employee表。我还有一个名为rota的自定义类,定义如下: public class rota { public Employee employee{ get; set; } public int DisplayOrder { get; set; }

我有一个Linq-to-SQL模型,它在某些地方使用存储过程返回需要更复杂SQL的对象。这一切都很好

我现在需要从一个SP返回一个自定义对象,该SP还封装了一个Linq到SQL对象。例如,我有一个名为
Employee
的类,它基于
Employee
表。我还有一个名为
rota
的自定义类,定义如下:

public class rota
{
    public Employee employee{ get; set; }
    public int DisplayOrder { get; set; }
    public DateTime StartingTime { get; set; }
    public DateTime FinishTime { get; set; }
}

我有一个相当复杂的linq,它计算任何给定日期的员工rota,然后返回该对象。我想将此逻辑移动到存储过程中,这样我就可以完全控制sql(生成的sql不是很好),但是我不确定如何返回该对象?

我相信这会起作用,尽管我没有运行它。如果没有,我知道您可以使用返回表变量的SQL函数来实现这一点

from x in dataContext.StoredProc("", "", "")
select new Rota {
    DisplayOrder = x.DisplayOrder,
    StartingTime = x.StartingTime,
    FinishTime = x.FinishTime,
    Employee = new Employee {
        EmployeeId = x.EmployeeId,
        Name = x.EmployeeName
    }
}

我建议为Rota对象创建一个构造函数,将存储过程结果作为参数。。。这样你就能做到

.Select(x => new Rota(x)).ToList<Rota>();
.Select(x=>newrota(x)).ToList();

为什么不返回Employee PK列来代替Employee complext类型,并通过LINQ to SQL从过程返回标准匿名类型?然后,您可以通过返回员工的第二个查询手动填充完整的员工,并手动合并这两个查询。这只需要几行代码。@johnopeinto-在这种情况下,我就是这么做的,谢谢。然而,如果我有大量的结果,这可能不是我的方法,你知道是否有可能实现我的要求吗?不管怎样,如果你贴出答案,我都会接受