我在数据库表中有一组记录,我们称之为组件表,定义为follows http://postimage.org/image/2a20tc8ck/.
管理员可以使用表的最后一列禁用标志来禁用某些组件。如果某个特定组件被禁用,它不应出现在用户的网格视图中。
我从数据库获取数据并通过网格视图呈现,如图所示here http://postimage.org/image/i96th4uc/,如果您观察到 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 值:作为参考,请参阅this http://postimage.org/image/iam34w5g/.
我无法弄清楚如何使用 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
});
编辑:替代解决方案如何将行号投影到 Linq 查询结果中 https://stackoverflow.com/questions/365086/how-to-project-a-line-number-into-linq-query-results/365127#365127
EDIT2:修复 SQL 不支持的选择:Linq 错误 - “NotSupportedException:查询运算符‘Select’使用的重载不受支持” https://stackoverflow.com/questions/3194641/linq-error-notsupportedexception-unsupported-overload-used-for-query-operator/3194666#3194666
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)