是否可以检测所选项是否是LINQ to SQL中的第一项?
我想知道如何构建一个查询表达式来理解所选的给定项是否是第一项。假设我正在从数据库中选择10项:是否可以检测所选项是否是LINQ to SQL中的第一项?,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\u NUMBER(),LINQtoSQL使用它,但不授予访问权限 我知道我可以Concat
var query = db.Table.Take(10).Select(t => IsFirst ? t.Value1 : t.Value2);
Select有一个索引变量,但在LINQ to SQL中不受支持。如果它得到支持,我的问题就会得到解决。还有别的把戏吗
例如,我可以在T-SQL上使用ROW\u NUMBER()
,LINQtoSQL使用它,但不授予访问权限
我知道我可以
Concat
两个查询,并在第一行中使用第一个表达式,以此类推,但我不想操纵查询的其余部分,只想操纵select语句本身,因为查询是在多个位置构建的,这是我希望在第一行上表现不同的地方。如果不可能的话,我会考虑其他选项。 可以使用索引超载,但是您需要使用LINQTO对象版本:
var query =
db.Table.Take(10).AsEnumreable()
.Select((t, index) => index == 0 ? t.Value1 : t.Value2);
如果
表
有主键。您可以这样做:
var result= (
from t in db.Table.Take(10)
let first=db.Table.Take(10).Select (ta =>ta.PrimayKey).First()
select new
{
Value=(t.PrimaryKey=first?t.Value1 : t.Value2)
}
);
这就是我现在用的。我想知道是否有可能在表达式中这样做。我接受这个答案,直到有更好的选择出现。