我有两个函数和一个包含2行的表。我想要一个函数来选择第一行而另一个函数来选择第二行。我有点失落,因为我对LINQ很新。
这是我目前的代码:
public static bool First() {
using (Entities db = new Entities()) {
DateTime FirstValue = (
from a in db.Table
select a.Timestamp
).Single();
public static bool Second() {
using (Entities db = new Entities()) {
DateTime SecondValue = (
from a in db.Table
select a.Timestamp
).Single();
我正在使用其他人的代码而且我是LINQ的新手,所以我不确定Single()的功能是什么。我觉得我的代码中不需要它,但我不确定。
答案 0 :(得分:3)
怎么样:
public static bool First() {
using (Entities db = new Entities()) {
DateTime FirstValue = (
from a in db.Table
select a.Timestamp
).FirstOrDefault();
public static bool Second() {
using (Entities db = new Entities()) {
DateTime SecondValue = (
from a in db.Table
select a.Timestamp
).Skip(1).FirstOrDefault();
答案 1 :(得分:3)
@dkackman提供了正确的答案(使用First / FirstOrDefault和Skip方法),但我想提一下,你可以避免混合查询语法和方法语法,方法可以简化为:
public static DateTime First()
{
return GetByIndex(0);
}
public static DateTime Second()
{
return GetByIndex(1);
}
public static DateTime GetByIndex(int index)
{
using (Entities db = new Entities())
return db.Table.Select(a => a.TimeStamp).Skip(index).First();
}
答案 2 :(得分:2)
试试这个,
private void First()
{
using (WinEntitie obj = new WinEntitie())
{
var FirstValue = (from a in obj.Employees select a.EmpName).Take(1);
}
}
private void Sec()
{
using (WinEntitie obj = new WinEntitie())
{
var FirstValue = (from a in obj.Employees orderby a.EmpID ascending select a.EmpName ).Skip(1).First();
}
}
答案 3 :(得分:1)
使用常见的方法就像这样一个你想要跳过的值只是将它传递给索引。并且还使用 FirstOrDefault ,因为相应的值返回null意味着它将小心或以其他方式获得execption。
public static DateTime GetByIndex(int index)
{
using (Entities db = new Entities()) {
return db.Table.Select(a => a.TimeStamp).Skip(index).FirstOrDefault();
}
return null;
}
答案 4 :(得分:0)
我对LINQ不知所措,我应该只使用'where'语句在我的查询中找到一些内容......也许我需要休息一下