linq - 是否可以检测所选项目是否是 LINQ-to-SQL 中的第一个项目?

标签 linq linq-to-sql

我想知道如何构建一个查询表达式来理解所选择的给定项目是否是第一个。假设我从数据库中选择 10 个项目:

var query = db.Table.Take(10).Select(t => IsFirst ? t.Value1 : t.Value2);

Select 有一个索引变体,但 LINQ-to-SQL 不支持该变体。如果支持的话我的问题就迎刃而解了。还有什么技巧吗?

例如,我可以在 T-SQL 上使用 ROW_NUMBER(),LINQ-to-SQL 使用但不提供访问权限。

我知道我可以Concat两个查询并使用第一个查询中的第一个表达式,依此类推,但我不想操作查询的其余部分,只想操作 select 语句本身,因为查询是在多个地方构建的,这就是我想要在第一行表现不同的地方。如果不可能的话,我会考虑其他选择。

最佳答案

您可以使用索引重载,但需要使用 LINQ to Objects 版本:

var query = 
    db.Table.Take(10).AsEnumreable()
    .Select((t, index) => index == 0 ? t.Value1 : t.Value2);

关于linq - 是否可以检测所选项目是否是 LINQ-to-SQL 中的第一个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10548189/

相关文章:

c# - 具有多个条件的数据表上的 LINQ

c# - 使用 .NET 遍历列表以添加元素

c# - MVC : Repopulate filters form's fields without using Model

linq-to-sql - 三层架构中的 LINQ to SQL

c# - 延迟执行 - 字典输出

linq-to-sql - 'IsDeleted' 类型的 'Entities.Product' 不支持子查询

.net - LINQ 到 XML。枚举没有结果?

c# - LINQ to SQL -> 无法访问已释放的对象。对象名称 : 'DataContext accessed after Dispose

c# - EDMX 新列在 ToList() 调用时生成错误

c# - 如何用新信息更新数据库