C# 将匹配项放在列表中,并获得不同的国家名称

C# 将匹配项放在列表中,并获得不同的国家名称,c#,linq,sharepoint-2010,logic,C#,Linq,Sharepoint 2010,Logic,在我的前端有两个选择国家的选项,一个是[Resident of:single Select DropDown List],另一个是[Country’s you Visited:Multiselect DropDown List],所有值都在SharePoint列表中,首先作为选择字段,另一个作为查找值id;值,id;价值观 现在我有了一个搜索页面,用户可以从国家下拉列表中选择条件:为了加载下拉列表,我已经从字段的居民中选择了所有不同的值,不知何故,我还需要从访问过的国家中获取值,并将其作为不同的

在我的前端有两个选择国家的选项,一个是[Resident of:single Select DropDown List],另一个是[Country’s you Visited:Multiselect DropDown List],所有值都在SharePoint列表中,首先作为选择字段,另一个作为查找值id;值,id;价值观

现在我有了一个搜索页面,用户可以从国家下拉列表中选择条件:为了加载下拉列表,我已经从字段的居民中选择了所有不同的值,不知何故,我还需要从访问过的国家中获取值,并将其作为不同的值加载到下拉列表中

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

Resident of Countries Visited a) Canada Chile,Argentina,Russia. b) Peru Canada,Russia,Spain,Germany. 现在,在加载下拉列表时,我将如何从上面的列表中获取不同的值。

尝试以下操作:

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();
解释

创建逗号分隔字符串的集合 使用string.Split将其投影到字符串集合中 使用SelectMany将其展平为单个列表 使用“距离”删除重复项
我无法从问题中判断您是否也希望居民列表与此列表合并。如果你这样做,你需要做的是联合居住国,而不是在最后进行区分。

简化@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();

但是,不确定这是否回答了问题。

您正在搜索String.Split“,”?我们可以将其拆分并放入一个数组中,但为了获得唯一的值,在对其两侧进行比较时会再次出现复杂性。谢谢Jesper,我一定会很快尝试,如果它适合该场景,我会发布给您。