如果不与其他表共享 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 中跳过值的主要内容,如果未能解决你的问题,请参考以下文章
共享收件箱 - 在 Outlook VBA 中跳过非邮件项目
PRISMA:如何在 prisma 常规类型中跳过 id 字段?