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

时间:2013-10-18 14:50:27

标签: c# asp.net linq

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

我在后面的代码中创建了一个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区的countryList [1]。

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

提前多多感谢。

维沙尔

2 个答案:

答案 0 :(得分:2)

您可以使用SelectMany展平List<string>内的Dictionary<TKey,TValue>

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

答案 1 :(得分:2)

试试这个:

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