假設你有一個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