在列表中输入一个匹配项,得到Distinct Country Names

本文关键字:得到 Distinct Names Country 一个 输入 列表 | 更新日期: 2023-09-27 18:15:49

在我的前端有2个选项来选择国家,一个是[居民:单一选择下拉列表],另一个是[国家的你访问过:多选择下拉列表],所有的值都在SharePoint列表中,首先作为选择字段,另一个作为查找values (id#;#value,#id#;#value)

现在我有一个搜索页面,用户可以从国家下拉列表中选择标准:为了加载下拉列表,我已经从Resident of field中选择了所有不同的值,不知何故,我需要从Country's visited中获取值,并将其加载到下拉列表中作为不同的值。

我想不出一个逻辑来从一个多选择字段中提取不同的值,然后将其与常规的选择字段值进行比较,如下所示:

<>之前到访国家的居民a)加拿大、智利、阿根廷、俄罗斯。b)秘鲁、加拿大、俄罗斯、西班牙、德国。

现在,在加载下拉菜单时,我将如何从上面的列表中获得不同的值

在列表中输入一个匹配项,得到Distinct Country Names

试试这个:

string countries1 = "Chile,Argentina,Russia";
string countries2 = "Canada,Russia,Spain,Germany";
var countryLists = new List<string>() { countries1, countries2 };
var distinctCountries = countryLists.Select( s => s.Split(','))
    .SelectMany(list => list, (list, country) => country)
    .Distinct();

解释
  • 创建以逗号分隔的字符串集合
  • 使用字符串。分割以将其投影到字符串集合的集合
  • 使用SelectMany将其平铺成单个列表
  • 使用区分删除重复项

从问题中我看不出您是否也希望将常驻列表与此列表合并。如果您这样做,您需要在最后做Union(residentCountries)而不是Distinct()

把@Mike Goodwin的回答简化一下:

string countries1 = "Chile,Argentina,Russia";
string countries2 = "Canada,Russia,Spain,Germany";
var countryLists = new List<string>() { countries1, countries2 };
var distinctCountries = string.Join(",", countryLists).Split(',').Distinct();

我不确定这是否回答了这个问题