【发布时间】:2010-11-12 23:32:15
【问题描述】:
您好,我有 2 个数据表(bannedlist、countrylist),都包含国家名称列表和 cc 列和国家/地区中的 cods。我正在尝试进行查询,我可以从 countrylist 表中选择不在禁止列表表中的国家,以创建第三个表。
有什么想法吗?
我还没有走得太远。
var ccList = ds.Tables[2].AsEnumerable();
var bannedCCList = ds.Tables[1].AsEnumerable();
var query = from r in ccList....
..
尝试后
var bannedCCList = ds.Tables[1].AsEnumerable();
var query = from r in ccList where !bannedCCList.Any(b => b["cc"] == r["cc"])select r;
我仍然得到相同的国家名单。禁止的还没有被删除。这里有更多细节以便解释更多。不知道我做错了什么
protected void BindCountryBan(string subd)
{
DataSet ds = new DataSet();
ds = new DB().CountryBan_GetSiteSettings();
BannedCountryListBox.DataSource = ds.Tables[1];
BannedCountryListBox.DataValueField = "cc";
BannedCountryListBox.DataTextField = "country";
BannedCountryListBox.DataBind();
//bind country list
var ccList = ds.Tables[2].AsEnumerable();
var bannedCCList = ds.Tables[1].AsEnumerable();
var query = from r in ccList where !bannedCCList.Any(b => b["cc"] == r["cc"])select r;
//var query = ccList.Except(bannedCCList);
//CountryListBox.DataSource = ds.Tables[2];
DataTable boundTable = query.CopyToDataTable<DataRow>();
CountryListBox.DataSource = boundTable;
CountryListBox.DataValueField = "cc";
CountryListBox.DataTextField = "country";
CountryListBox.DataBind();
}
【问题讨论】:
-
在重新思考我的问题后,我已经意识到,而不是玩并试图解决它,而是在我的 sql 查询中添加一个小的 where “选择 * from country_list where cc not in(select cc from country_list_banned_countries where subdomain=@subdomain ) order by country asc" 我可以从服务器端的国家列表中提取被禁止的国家,并毫不费力地绑定。谢谢大家