使用Linq生成每个结果的ID
问题描述:
我正在创建一个Web API来显示我们系统中的忠诚计划列表。每个忠诚度计划都有一个超长的GUID,我想以某种方式变成一个简单的唯一ID。使用Linq生成每个结果的ID
API旨在用ID显示每个项目的目的是,最终用户可以使用相同的命令和ID号码来获取有关忠诚度计划的更多信息。
在SQL中,我会使用类似Rank的东西,但我不知道如何在这里应用。
var ReturnedLoyalty = from d in db.LoyaltyCampaigns
where d.CampaignStart < DateTime.Now && d.CampaignStop >= DateTime.Now
orderby d.CampaignName ascending
select new { d.CampaignGUID, d.CampaignName };
我想替补多的d.campaignguid一组简单的像1,2,3号......等
答
不幸的是查询理解语法不支持的两个参数版本select
,但你可以在查询后使用:
var ReturnedLoyalty = (from d in db.LoyaltyCampaigns
where d.CampaignStart < DateTime.Now && d.CampaignStop >= DateTime.Now
orderby d.CampaignName ascending
select d.CampaignName).Select((name, index) => new { ID = index, CampaignName = name});
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql-identity-property –
你可以这样用一个'.Select((value,index)=> ...})'(linq to objects)...但是如果你想要一个基于整数ID ...添加一个基于整数的ID。否则,这些数字会随着时间的推移而改变,这会让人们感到困惑。 –
SQL表由第三方软件供应商创建。他们的软件在幕后使用GUID列,并将它设置为表格中的缩进列。所以我无法在SQL表上创建一个新的标识。 – BobbyDigital