2013-03-15 48 views
1

我正在使用此方法獲取結果以填充我的網格,但此方法也用於填充另一個需要帶有兩個參數的where子句的網格,並且這一個 只需要一個。即使我傳遞了未使用的參數的null值,但仍然由於where子句返回沒有結果。任何意見如何我可以 改變這可能使用LINQ到SQL,我調用方法來指定where子句,而不是在獲取數據的方法?使用LINQ to sql來指定where子句

DocsForReview.DataSource = docLib.GetGrid(Guid.Empty, lib); 

using (var dc = new DocMgmtDataContext()) 
{ 
    var subs = (from doc in dc.Documents 
       join u in dc.Users on doc.OwnedByUserID equals u.ID 
       where doc.OwnedByUserID == usr && doc.LibraryID == lib 
       select new StudentDocuments 
       { 
        DocID = doc.ID, 
        Assignment = doc.Library.Name, 
        Submitted = doc.UploadDT, 
        Student = u.FullName 
       }).OrderByDescending(c => c.Submitted).AsEnumerable().ToList(); 
    return subs; 
} 
+0

不會使用LINQ2SQL如果這是一個新的項目,使用Linq2Entities – BlackICE 2013-03-15 13:58:32

回答

2

對於可空類型試試這個:

doc.LibraryID == (lib ?? doc.LibraryID) 

在你的情況(一的System.Guid)你可以試試這個:

doc.LibraryID == (lib == Guid.Empty ? doc.LibraryID : lib) 
+0

因爲我的lib和usr是GUID我得到的錯誤'操作員?不能應用於類型system.guid的操作數' – Masriyah 2013-03-15 14:01:48

+0

不知道這一點。更新迴應。 – 2013-03-15 14:02:57

+0

學到了新東西。感謝您的幫助 - 非常感謝! – Masriyah 2013-03-15 14:06:35