使用linq to sql来指定where子句

时间:2013-03-15 13:44:22

标签: c# linq-to-sql

我正在使用此方法来获取结果以填充我的网格,但此方法也用于填充另一个网格,该网格需要带有两个参数的where子句 只需一个。即使我传入了未使用的param的null,但由于where子句仍然没有返回结果。任何关于我如何的建议 改变这个可能使用linq到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;
}

1 个答案:

答案 0 :(得分:2)

对于可空类型,请尝试以下方法:

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

在你的情况下(System.Guid)你可以试试这个:

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