Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在asp.net/C中使用LinqToSql对行号进行排序#_C#_Asp.net_Linq To Sql_Gridview_Row Number - Fatal编程技术网

C# 在asp.net/C中使用LinqToSql对行号进行排序#

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

我在一个数据库表中有一组记录,我们称之为Components表,该表定义为

管理员可以使用表的最后一列disableflag禁用某些组件。如果某个特定组件被禁用,则该组件不应出现在用户的gridview中

我从数据库获取数据,并通过gridview显示,如图所示,如果您观察到SNo值不符合顺序

我用来检索数据的linq查询是:

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的链接。