1

我有两个函数和一个有 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() 也能做什么。我觉得好像我的代码中不需要它,但我不确定。

4

5 回答 5

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();        
}
于 2013-09-11T00:10:22.100 回答
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();
于 2013-09-10T23:46:01.140 回答
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();
    }
}
于 2013-09-11T14:56:48.377 回答
1

使用常用方法来处理您想要跳过的任何值,只需将其传递给索引即可。并且还使用FirstOrDefault因为相应的值返回 null 意味着它会小心或以其他方式获得执行。

public static DateTime GetByIndex(int index)
{
    using (Entities db = new Entities()) {
       return db.Table.Select(a => a.TimeStamp).Skip(index).FirstOrDefault();        
    }
  return null;
}
于 2014-10-08T09:08:22.777 回答
0

我对 LINQ 不知所措,我应该简单地使用“where”语句来定位查询中的某些内容……也许我需要休息一下

于 2013-09-10T23:43:30.953 回答