2013-03-15 2 views
1

Я использую этот метод для получения результатов, чтобы заполнить мою сетку, но этот метод также используется для заполнения другой сетки, для которой требуется предложение where с двумя параметрами, и этому нужно только . Несмотря на то, что я прошел в нуле параметра, который не используется, но все же он не возвращает никаких результатов из-за предложения where. Любой совет, как я мог изменить это, возможно, использовать linq для sql, где я вызываю метод, чтобы указать предложение where вместо метода получения данных?using linq to sql, чтобы указать, где статья

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

ответ

2

Для обнуляемых типов попробовать это:

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

В вашем случае (а System.Guid), вы можете попробовать это:

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

, потому что мои lib и usr - это guids, я получаю ошибку 'Operator ?? не может применяться к операндам типа system.guid' – Masriyah

+0

Не знал об этом. Обновленный ответ. –

+0

узнал что-то новое. Спасибо за вашу помощь - очень ценю! – Masriyah