C# Linq查询不向Datagridview返回任何数据(Linq查询可能失败)C

C# Linq查询不向Datagridview返回任何数据(Linq查询可能失败)C,c#,mysql,linq,C#,Mysql,Linq,有人能帮忙吗?我需要在Extn_In_Call_Records=Extn_Number上返回一个表,如果任何一方不匹配,仍然返回一个值,就像SQL完全外部联接一样。我花了几个小时看这个,并得到了一些帮助,但无法让它工作!!正在从MYSQL填充数据表。任何帮助都会很好。我还想说我是LINQ和C的新手,我在查询中没有发现任何错误,但它没有向gridview返回任何内容 这些是由MySQL数据填充的表。我已将列名作为注释放在datatables下 DataTable physextns = ne

有人能帮忙吗?我需要在Extn_In_Call_Records=Extn_Number上返回一个表,如果任何一方不匹配,仍然返回一个值,就像SQL完全外部联接一样。我花了几个小时看这个,并得到了一些帮助,但无法让它工作!!正在从MYSQL填充数据表。任何帮助都会很好。我还想说我是LINQ和C的新手,我在查询中没有发现任何错误,但它没有向gridview返回任何内容

这些是由MySQL数据填充的表。我已将列名作为注释放在datatables下

   DataTable physextns = new DataTable(); 
   extnlkp.Fill(physextns);
   //Table Format Below
   //("Company_Name")
   //("Phys_Switch_Name")
   //("Extn_Number")

    DataTable callrecdt = new DataTable();
    callrec.Fill(callrecdt);
    //Table Format Below
    //("Switch_Name");
    //("Extn_In_Call_Records");
    //("Total_Calls");
    //("Talk_Time");
    //("Total_Cost");

        try
         {

            //Full Result

             var defaultPhysex = new { };

             var left =from callrc in callrecdt.AsEnumerable()
                        join physex in physextns.AsEnumerable()
                          on callrc["Extn_In_Call_Records"] equals physex["Extn_Number"]
                        into temp
                        from physex in temp.DefaultIfEmpty()
                        select new
                        {
                        Extn_In_Call_Records = ("Extn_In_Call_Records"),
                        Total_Calls = ("Total_Calls"),
                        Extn_Number = ("Extn_Number"),
                        Phys_Switch_Name = ("Phys_Switch_Name"),               
                         };

             var right = from physex in physextns.AsEnumerable()
                         join callrc in callrecdt.AsEnumerable()
                         on physex["Extn_Number"] equals callrc["Extn_In_Call_Records"]
                         into temp
                         from physex1 in temp.DefaultIfEmpty(defaultPhysex)
                         select new
                         {
                            Extn_In_Call_Records = ("Extn_In_Call_Records"),
                            Total_Calls = ("Total_Calls"),
                            Extn_Number = ("Extn_Number"),
                            Phys_Switch_Name = ("Phys_Switch_Name"),
                         };

             var union = left.Union(right);
             fullresult.DataSource = union;  //fullresult is the datatable I am populating
结果见

Extn_In_Call_Records    Total_Calls   Extn_Number      Phys_Switch_Name
null                    20                0                Hospital
null                    310               1                Hospital
4                       132               4                Hospital
2004                    null                null           Hospital
2006                    2               2006           Hospital

我看你的代码没有明显的问题。您对Union的调用应返回两个集合之间的所有公共记录

您没有说明要为哪个平台编程,所以我在WinForms DataGridView中尝试了它。Union返回的IEnumerable类型似乎没有绑定

尝试在末尾添加一个收费表

fullresult.DataSource = union.ToList();

谢谢你解决了这个问题。