使用linq to SQL指定where子句

本文关键字:where 子句 指定 SQL linq to 使用 | 更新日期: 2023-09-27 18:04:18

我使用此方法来获取结果来填充我的网格,但此方法也用于填充另一个网格,该网格需要一个带有两个参数的where子句和这个子句只需要一个。即使我传递了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;
}

使用linq to SQL指定where子句

对于可空类型,尝试如下:

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

在你的例子中(一个System.Guid),你可以这样做:

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