如何选择/合并多个匹配结果

本文关键字:结果 合并 何选择 选择 | 更新日期: 2023-09-27 18:35:53

我正在尝试创建一组级联下拉列表,基于区域列表的国家/地区列表。

我在代码隐藏中创建了一个Dictionary<String, List<String>>,其中包括地区、国家/地区列表。

现在在区域下拉选择(这是多选的),我需要选择属于特定地区(选定地区)的国家/地区并将其绑定到国家/地区列表。

我正在尝试这种方式:

List<string> selectedRegions = (from ListItem item in regionList.Items
                                where item.Selected
                                select item.Text).ToList();
var countryList = (selectedRegions
                          .Where(item => regionToCountry.ContainsKey(item))
                          .Select(item => new { value = regionToCountry[item] }));
countryList.DataSource = countryList.ToList(); 
countryList.DataBind();

问题是国家列表以索引格式获取结果,例如:countryList[0](包含区域a中的所有国家)B区的国家列表[1]。

我需要一个可以绑定到下拉列表的合并列表。

提前非常感谢。

维沙尔

如何选择/合并多个匹配结果

您可以使用

SelectMany来展平Dictionary<TKey,TValue>内的List<string>

var countryList =
    regionToCountry.Where(x => selectedRegions.Contains(x.Key))
                   .SelectMany(x => x.Value)
                   .ToList();

试试这个:

var countryList = selectedRegions
                          .Where(item => regionToCountry.ContainsKey(item))
                          .SelectMany(item => regionToCountry[item])
                          .ToList();