我有一张汇率表。我需要获得当前的费率和以前的费率,然后比较结果。
我可以使用FirstOrDefault
获得第一条记录。
当我使用ElementAtOrDefault
时,此错误显示“不支持查询运算符'ElementAtOrDefault'”。我怎样才能获得第二张唱片?
答案 0 :(得分:33)
你可以试试这个:
var query=data.Skip(1).Take(1);
答案 1 :(得分:5)
如果元素不存在,则Take()返回null(因此等同于FirstOrDefault())。
如果您更倾向于抛出异常(因为第二个元素不在那里),比如First(),那么使用:
Skip(1).Single()
答案 2 :(得分:3)
如果您使用
.Take(2)
你会得到第一个和第二个。
编辑 - 如果你需要第一个和第二个,那么上面的效率比运行你的查询两次更有效:
.Take(1)
.Skip(1).Take(1)
答案 3 :(得分:3)
尝试这个可能有用的简单实现
var query= (from p in db.Person where p.Person == person_id select p);
var firstResult = query.First();
var secondResult = query.Skip(1).Take(1).Single();
var thirdResult = query.Skip(2).Take(1).Single();
答案 4 :(得分:1)
选择前2,然后选择第二个元素。
答案 5 :(得分:1)
Collection.ElementAt(1)
将获取集合中的第二条记录。
答案 6 :(得分:0)
使用.Skip(1)方法
答案 7 :(得分:0)
正如约翰·安德森(John Anderson)指出的那样,Skip(1).Take(1)
返回大小为1的IEnumerable
。
为了获取第二个条目本身或null
(即无例外),我在使用以下内容:
var secondEntry = collection?.Skip(1)?.FirstOrDefault();
它可能不适用于您的特定情况,但可能对其他情况有用。