C# 在asp.net/C中使用LinqToSql对行号进行排序#
我在一个数据库表中有一组记录,我们称之为Components表,该表定义为 管理员可以使用表的最后一列disableflag禁用某些组件。如果某个特定组件被禁用,则该组件不应出现在用户的gridview中 我从数据库获取数据,并通过gridview显示,如图所示,如果您观察到SNo值不符合顺序 我用来检索数据的linq查询是:C# 在asp.net/C中使用LinqToSql对行号进行排序#,c#,asp.net,linq-to-sql,gridview,row-number,C#,Asp.net,Linq To Sql,Gridview,Row Number,我在一个数据库表中有一组记录,我们称之为Components表,该表定义为 管理员可以使用表的最后一列disableflag禁用某些组件。如果某个特定组件被禁用,则该组件不应出现在用户的gridview中 我从数据库获取数据,并通过gridview显示,如图所示,如果您观察到SNo值不符合顺序 我用来检索数据的linq查询是: var gridViewResults = from results in db.Components where results.DisableFlag == fals
var gridViewResults = from results in db.Components where results.DisableFlag == false
select new { SNo = results.SNo, ComponentNames = results.Component_Name, Size = results.Size__in_MB_, Price = results.Price__in_SEK_, TotalDownloads = results.Total_Downloads, Description = results.Description };
但我希望数据按顺序显示,即SNo为1、2、3、4,不依赖于数据库表SNo值:仅供参考
我不知道如何使用linq查询来实现这一点:
我尝试了以下查询:
(db.Components.AsEnumerable().Select((iterator)=> new{iterator.SNo + 1})
但我认为这是荒谬的。谁能帮我一下吗
感谢您的期待。如果您完全确定要忽略数据库编号(如果这些编号实际上与任何内容都不对应,为什么要输出这些编号?),您可以尝试以下操作:
var gridViewData = from results in db.Components
where results.DisableFlag == false
select new
{
ComponentNames = results.Component_Name,
Size = results.Size__in_MB_,
Price = results.Price__in_SEK_,
TotalDownloads = results.Total_Downloads,
Description = results.Description
};
var gridViewResults = gridViewData.AsEnumerable().Select((item, index) => new
{
SNo = index + 1,
ComponentNames = item.ComponentNames,
Size = item.Size,
Price = item.Price,
TotalDownloads = item.TotalDownloads,
Description = item.Description
});
编辑:来自的替代解决方案
EDIT2:修复不支持的SQL选择:大家好,这里是最终答案。约书亚做了所有的工作。非常感谢他。我只是想向未来有同样问题的人强调答案。如果有人想投票,请投票给约书亚
var gridViewData = from results in db.Components
where results.DisableFlag == false
select new
{
ComponentNames = results.Component_Name,
Size = results.Size__in_MB_,
Price = results.Price__in_SEK_,
TotalDownloads = results.Total_Downloads,
Description = results.Description
};
var gridViewResults = gridViewData.AsEnumerable().Select((item, index) => new
{
SNo = index + 1,
ComponentNames = item.ComponentNames,
Size = item.Size,
Price = item.Price,
TotalDownloads = item.TotalDownloads,
Description = item.Description
}).ToList();
这应该是可行的。@Joshuw我的目的是将输出放到gridview上,我如何将此输出投射到gridview中gridview@Joshua“无法将属性或索引器'AnonymousType#1.SNo'分配给--它是只读的”这是我在'item.SNo=SNo'行中遇到的错误。请帮帮我!!请尝试最新版本。部分问题在于匿名类型的使用,它们需要一个中间步骤来处理所需的数据。创建一个实际的类来保存信息会使它更简单一些。另外,
gridViewResults
将是匿名类型的枚举,因此您将在网格视图上使用它,就像您已经使用过的一样。@Joshua如果我使用以前使用的代码,这就是我得到的错误edited@user653622:现在应该已修复,有关原因,请参阅EDIT2的链接。