如何使用Linq获取数据表中特定列单元格值的上限和下限值

时间:2013-11-21 13:35:06

标签: c# .net linq datatable dataset

我的数据表包含如下数据(dtDocument)

DocumentID  ProjectID   DocumentTypeID StatusID    StatusReason 
----------- ----------- -------------- ----------- -------------
299         1           1              0           NULL         
300         1           1              35          NULL         
301         1           1              0           NULL         
302         1           1              26          NULL         
303         1           1              27          NULL         
304         1           1              26          NULL         
305         1           1              28          NULL         
306         1           1              27          NULL         
307         1           1              27          NULL         
308         1           1              27          NULL         
309         1           1              27          NULL         
310         1           1              27          NULL    

客户端可以根据该文档发送DocumentID我想要获取该文档上一页和下一页文档ID。这可以用于我的Next,Previous按钮。

我希望使用Linq(Preferrable)

进行性能查询

示例:如果用户选择303 Document并选择Next按钮,它将移至304,如果用户选择Previous按钮,它将移至302

3 个答案:

答案 0 :(得分:0)

var prevID = dtDocument.Where(d => d.DocumentID < selectedID).Max(d => d.DocumentID);
var nextID = dtDocument.Where(d => d.DocumentID > selectedID).Min(d => d.DocumentID);

答案 1 :(得分:0)

如果你有一个保持当前记录编号的变量和两个将从这个数字中加或减的按钮并调用以下内容:

public dtDocument GetDocument(int record)
{
    return dtDocument.OrderBy(x=>x.DocumentID).Skip(record - 1).Take(1)
}

答案 2 :(得分:0)

var forNext = (from myRow in myDataTable.AsEnumerable()
                           where myRow.Field<int>("DocumentID") > CurrentID
                           orderby myRow.Field<int>("DocumentID")
                           select myRow).FirstOrDefault();

            var forPrevious = (from myRow in myDataTable.AsEnumerable()
                               where myRow.Field<int>("DocumentID") < CurrentID
                               orderby myRow.Field<int>("DocumentID") descending
                               select myRow).FirstOrDefault();