Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Linq获取datatable中特定列单元格值的上下值_C#_.net_Linq_Datatable_Dataset - Fatal编程技术网

C# 如何使用Linq获取datatable中特定列单元格值的上下值

C# 如何使用Linq获取datatable中特定列单元格值的上下值,c#,.net,linq,datatable,dataset,C#,.net,Linq,Datatable,Dataset,我有一个包含如下数据的数据表(dtDocument) 客户端可以基于我要获取的文档上一个和下一个文档Id发送DocumentID。这可用于我的下一个、上一个按钮 我希望使用Linq(首选)进行性能查询。 示例:如果用户选择303文档并选择下一个按钮,它将移动到304,如果用户选择上一个按钮,它将移动到302,其中(d=>d.DocumentIDd.DocumentID); var prevID = dtDocument.Where(d => d.DocumentID < select

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

客户端可以基于我要获取的文档上一个和下一个文档Id发送DocumentID。这可用于我的下一个、上一个按钮

我希望使用Linq(首选)进行性能查询。

示例:如果用户选择303文档并选择下一个按钮,它将移动到304,如果用户选择上一个按钮,它将移动到302,其中(d=>d.DocumentIDd.DocumentID);
var prevID = dtDocument.Where(d => d.DocumentID < selectedID).Max(d => d.DocumentID);
var nextID = dtDocument.Where(d => d.DocumentID > selectedID).Min(d => d.DocumentID);
var nextID=dtDocument.Where(d=>d.DocumentID>selectedID).Min(d=>d.DocumentID);
如果您有一个保持当前记录号码的变量和两个将从此号码进行加减的按钮,并调用以下命令:

public dtDocument GetDocument(int record)
{
    return dtDocument.OrderBy(x=>x.DocumentID).Skip(record - 1).Take(1)
}
var forNext=(来自myDataTable.AsEnumerable()中的myRow)
其中myRow.Field(“DocumentID”)>CurrentID
orderby myRow.Field(“DocumentID”)
选择myRow).FirstOrDefault();
var forPrevious=(来自myDataTable.AsEnumerable()中的myRow)
其中myRow.Field(“DocumentID”)
到目前为止您尝试了什么?顺便说一下,使用绑定数据库使用SQL查询,你有客户机上的所有数据吗?是winforms、wpf还是asp.net?请添加您的sql查询?WCF(Rest服务)lazyberezovskyI先生认为您应该跳过
记录
,如果所有文档都有从1开始的增量ID,而不包含no,这将起作用,因为对于第一条记录(1),我希望跳过0。如果您要跳过0,然后,您将返回完全相同的文档,其本质是您说“获取我记录编号X”。因此,如果您想要第一条记录(X=1),则应跳过0。OP想要上一个和下一个文档,而不知道它们的ID。您的所有代码基本上都是
dtDocument.Where(x=>x.DocumentId==record)
(顺便说一句,返回类型应该是IEnumerable)
public dtDocument GetDocument(int record)
{
    return dtDocument.OrderBy(x=>x.DocumentID).Skip(record - 1).Take(1)
}
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();