假设你有一个ID列表:LINQ LEFT JOIN与列表<String>
string str = "82174F2000000, 82174F2000001, 82174F2000002, 82174F2000003, 82174F2000004, 82174F2000005";
而且你这样做:
var tids = new List<string>(str.Replace(", ", ",").Split(','));
var tntable = tids.AsQueryable();
而且要将其与左比较表中加入:
var line = from c in db.Ctable
join l in tntable on c.CarID equals l.CarID into c_j
from l in c_j.DefaultIfEmpty()
select new
{
Name = c.OwnerName,
Hours = c.Hours
};
看起来像tntable没有名为'CarID'的字段。
有人可以帮忙吗?
这是针对LINQ to Entity的。
我已经看到了这一点:
How to compare List<String> to DB Table using LINQ
但不知道做一个LEFT JOIN。
TIA!
我知道这很长;但感谢阅读。
更新的MichaC:
在CTable的数据库中,我们有这些CarIDs:
CarID
_____
82174F2000000
82174F2000001
82174F2000002
82174F2000003
让我们只说表(tntable)含有分解成记录的字符串:
CarID
_____
82174F2000000
82174F2000001
82174F2000002
82174F2000003
82174F2000004
82174F2000005
所以,一个左加入像这样:
SELECT C.CarID, T.CarID
FROM CTable C
LEFT JOIN tntable T ON C.CarID = T.CarID
会产生你:
T.CarID C.CarID
_______ _______
82174F2000000 82174F2000000
82174F2000001 82174F2000001
82174F2000002 82174F2000002
82174F2000003 82174F2000003
82174F2000004 NULL
82174F2000005 NULL
我不仅想知道CTable中的内容,而且还想返回NULL(不在CTable中)。你有的例子只返回CTable中的内容。谢谢! – scv 2012-07-10 00:46:54
如果它有效,它非常酷。我会立即尝试并报告。 – scv 2012-07-10 21:36:35
看起来你有很好的chakara。再次感谢。 – scv 2012-07-10 23:29:46