如果不与其他表共享 ID,如何从 SQL 中跳过值

Posted

技术标签:

【中文标题】如果不与其他表共享 ID,如何从 SQL 中跳过值【英文标题】:How to skip values from SQL if not sharing ID with other table 【发布时间】:2014-09-25 04:28:12 【问题描述】:

我正在尝试创建要在下拉列表中显示的城市列表,但我想跳过不与其他列表共享值的城市。有一个例子:

如您所见,我的任何广告客户都在芝加哥,所以我想从下拉列表中跳过这个城市。这就是它的显示方式:

 protected void Page_Load(object sender, EventArgs e)
    
        var cities= new CitiesController().FetchAll();
        listCity = cities.ToList();
    

.

 <% for (int i = 0; i < listCity.Count; i++)  %>
     <% var sec = listaCity[i];%>
 <option value="c.<%= sec.CityId %>"><%= sec.Name %></option>
      <%  %>

这显示了所有城市,我不知道如何跳过那些城市 ID 没有出现在广告客户的城市 ID 中的城市。

【问题讨论】:

【参考方案1】:

如果我假设您有一个包含所有广告客户的变量 advertisers 和一个包含所有城市 cities 的变量,您可以这样做:

var citiesToDisplay = from city in cities join adv in advertisers on city.cityID equals adv.cityID 
select city;

【讨论】:

【参考方案2】:

使用Contains 查找两个列表之间的共同项。您也可以使用 Linq Any 来实现您想要的。

 var advertiserList = // advertiser's city list
 var cities = new CategoryController().FetchAll();
 var listCity  = cities.Where (a => advertiserList.Select(b => b.cityID).Contains(a.cityID)).ToList();

listCity 只会在 advertiserList 中出现时为您提供城市列表

【讨论】:

非常感谢,最后一行帮助我弄清楚了如何制作它。它准确地向我展示了我想要展示的城市。

以上是关于如果不与其他表共享 ID,如何从 SQL 中跳过值的主要内容,如果未能解决你的问题,请参考以下文章

如何更改主键自动增量,以便在删除行时不会跳过值[重复]

如何从mysql中的表中跳过行

共享收件箱 - 在 Outlook VBA 中跳过非邮件项目

PRISMA:如何在 prisma 常规类型中跳过 id 字段?

如何在不跳过值的情况下读取 PHPExcel 中的空单元格?

如何在 ddd (gdb) 中跳过过去的循环