使用Linq为每个结果生成ID

时间:2017-08-30 16:25:27

标签: entity-framework linq asp.net-web-api2

我正在创建一个Web API来显示我们系统中的忠诚度计划列表。每个忠诚度计划都有一个超长的GUID,我想以某种方式变成一个简单的唯一ID。

API的目的是显示带有id的每个项目,最终用户可以使用相同的命令和ID号来获取有关忠诚度计划的更多信息。

在SQL中我会使用像Rank Over这样的东西,但我不知道如何在这里应用它。

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 ......等。

1 个答案:

答案 0 :(得分:0)

不幸的是,查询理解语法不支持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});