У меня есть две таблицы данных, для которых я выполняю левое соединение с использованием linq. Он работает, когда я использую JOIN, но, поскольку он имеет некоторые нулевые значения в полученных данных при использовании левого соединения, он не работает. Ниже приведен код
DataTable dt1 = user.getData();
DataTable dt2 = user.getOldData();
var results = from p2 in dt2.AsEnumerable()
join p1 in dt1.AsEnumerable()
on p2["XPNNUM"].ToString() equals (string)p1["pid"]
into a
from b in a.DefaultIfEmpty()
select new
{
XPNNUM = p2["XPNNUM"].ToString(),
XPNNAM = (string)p2["XPNNAM"],
XPNGRD = (string)p2["XPNGRD"],
user_id = b["user_id"].ToString(),
firstname = b["firstname"].ToString(),
usertype = b["usertype"].ToString(),
subid = b["subid"].ToString(),
};
Если данные похожи на приведенные ниже, это не сработает, и это 'дает ссылку на объект, не установленную для ошибки экземпляра.
+--------+--------+--------+---------+-----------+----------+-------+
| XPNNUM | XPNNAM | XPNGRD | user_id | firstname | usertype | subid |
+--------+--------+--------+---------+-----------+----------+-------+
| 12 | Test | 4 | null | null | null | null |
+--------+--------+--------+---------+-----------+----------+-------+
Есть ли лучший способ сделать то же самое? Не может сделать это в конце SQL, поскольку таблицы данных поступают из двух разных источников.