Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# 从表1中选择行,并从表2中选择所有子对象_C#_Linq_Join - Fatal编程技术网

C# 从表1中选择行,并从表2中选择所有子对象

C# 从表1中选择行,并从表2中选择所有子对象,c#,linq,join,C#,Linq,Join,我想从表“省通知程序”中提取数据,并从表“省通知程序数据”中提取所有相应的项。表“省通知程序”有一个标识它的guid(PK),表“省通知程序数据”有一个名为BelongStopProvinceID的列,它是“省通知程序”表guid的外键 我试过这样的方法: var records = from data in ctx.Province_Notifiers where DateTime.Now >= data.SendTime && data.Se

我想从表“省通知程序”中提取数据,并从表“省通知程序数据”中提取所有相应的项。表“省通知程序”有一个标识它的guid(PK),表“省通知程序数据”有一个名为BelongStopProvinceID的列,它是“省通知程序”表guid的外键

我试过这样的方法:

var records = from data in ctx.Province_Notifiers
              where DateTime.Now >= data.SendTime && data.Sent == false
              join data2 in ctx.Province_Notifier_Datas on data.Province_ID equals data2.BelongsToProvince_ID
              select new Province_Notifier
              {
                  Email = data.Email,
                  Province_ID = data.Province_ID,
                  ProvinceName = data.ProvinceName,
                  Sent = data.Sent,
                  UserName = data.UserName,
                  User_ID = data.User_ID,
                  Province_Notifier_Datas = (new List<Province_Notifier_Data>().AddRange(data2))
              };
这样可以将数据正确插入两个表中

编辑:

将引发以下错误消息:

无法从“省\通知程序\数据”转换为“System.Collections.Generic.IEnumerable”

如果我在Visual Studio中查看,变量“Province\u Notifier\u Datas”的类型是System.Data.Linq.EntitySet

与“System.Collections.Generic.List.AddRange(System.Collections.Generic.IEnumerable)”匹配的最佳重载方法具有一些无效参数

编辑

var records = from data in ctx.Province_Notifiers
              where DateTime.Now >= data.SendTime && data.Sent == false        
              join data2 in ctx.Province_Notifier_Datas on data.Province_ID equals data2.BelongsToProvince_ID
              into data2list
              select new Province_Notifier
              {
                  Email = data.Email,
                  Province_ID = data.Province_ID,
                  ProvinceName = data.ProvinceName,
                  Sent = data.Sent,
                  UserName = data.UserName,
                  User_ID = data.User_ID,
                  Province_Notifier_Datas = new EntitySet<Province_Notifier_Data>().AddRange(data2List)
              };
var records=来自ctx.Province\u通知程序中的数据
其中DateTime.Now>=data.SendTime&&data.Sent==false
在数据上的ctx.Province\u Notifier\u数据中加入data2.Province\u ID等于data2.BelongsToProvince\u ID
进入data2list
选择新省\通知程序
{
Email=data.Email,
省\号=数据。省\号,
ProvinceName=data.ProvinceName,
已发送=数据。已发送,
UserName=data.UserName,
User\u ID=data.User\u ID,
省\通知程序\数据=新EntitySet().AddRange(data2List)
};

错误3当前上下文中不存在名称“data2List”。

data2
表示类型为
省\通知者\数据的单个对象,而不是枚举(因此为异常)。尝试在查询中插入
子句:

var records = from data in ctx.Province_Notifiers
              where DateTime.Now >= data.SendTime && data.Sent == false
              join data2 in ctx.Province_Notifier_Datas
                  on data.Province_ID equals data2.BelongsToProvince_ID
              into data2List
              select new Province_Notifier
              {
                  Email = data.Email,
                  Province_ID = data.Province_ID,
                  ProvinceName = data.ProvinceName,
                  Sent = data.Sent,
                  UserName = data.UserName,
                  User_ID = data.User_ID,
                  Province_Notifier_Datas = data2List
              };
如果
Province\u Notifier\u data
的类型为
EntitySet
,您可以尝试以下操作:定义扩展方法(idea from):


当我尝试这样做时,会出现以下错误:错误3无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Data.Linq.EntitySet”。存在显式转换(是否缺少强制转换?@Patrick:EntitySet类型的
省\通知者\数据
?然后试试我编辑的代码。我添加了它,但现在它找不到data2List??在我上面的帖子中,底部似乎是一个打字错误:
data2list
vs.
data2list
是的,我有时是瞎的。我现在明白了:错误1无法将类型“void”隐式转换为“System.Data.Linq.EntitySet”
var records = from data in ctx.Province_Notifiers
              where DateTime.Now >= data.SendTime && data.Sent == false        
              join data2 in ctx.Province_Notifier_Datas on data.Province_ID equals data2.BelongsToProvince_ID
              into data2list
              select new Province_Notifier
              {
                  Email = data.Email,
                  Province_ID = data.Province_ID,
                  ProvinceName = data.ProvinceName,
                  Sent = data.Sent,
                  UserName = data.UserName,
                  User_ID = data.User_ID,
                  Province_Notifier_Datas = new EntitySet<Province_Notifier_Data>().AddRange(data2List)
              };
var records = from data in ctx.Province_Notifiers
              where DateTime.Now >= data.SendTime && data.Sent == false
              join data2 in ctx.Province_Notifier_Datas
                  on data.Province_ID equals data2.BelongsToProvince_ID
              into data2List
              select new Province_Notifier
              {
                  Email = data.Email,
                  Province_ID = data.Province_ID,
                  ProvinceName = data.ProvinceName,
                  Sent = data.Sent,
                  UserName = data.UserName,
                  User_ID = data.User_ID,
                  Province_Notifier_Datas = data2List
              };
public static class Extensions
{
    public static EntitySet<T> ToEntitySet<T>(this IEnumerable<T> source)
        where T : class
    {
        var entitySet = new EntitySet<T>();
        entitySet.AddRange(source);
        return entitySet;
    }
}
Province_Notifier_Datas = data2List.ToEntitySet()