C# 字典到逗号分隔的字符串?

C# 字典到逗号分隔的字符串?,c#,asp.net,linq,C#,Asp.net,Linq,我需要的是有一个字典,其中包含所有masterData数组值的字符串键&仅对于字符串abc中的那些键,将值设置为1。所有其他键的值都需要为0。在这种情况下,字典应该是string类型&value应该是uint类型。在这种情况下,字典应如下所示: // Below is an array which contains master data string[] masterData = { "324", "233", "32", "423", "23435" }; // Below string

我需要的是有一个字典,其中包含所有masterData数组值的字符串键&仅对于字符串abc中的那些键,将值设置为1。所有其他键的值都需要为0。在这种情况下,字典应该是string类型&value应该是uint类型。在这种情况下,字典应如下所示:

// Below is an array which contains master data
string[] masterData = { "324", "233", "32", "423", "23435" };

// Below string will always contain a comma separated subset of above master data
string abc = "233,423,99";
请注意,99 from字符串被忽略,因为字典中只应存在所有主数据

有没有一种使用linq的方法?如果没有,还有什么其他的短路方式

另外,如何使用linq或任何其他缩短方法(即将字典转换回逗号分隔字符串)以相反的方式执行上述操作?这个字符串应该只包含字典中值为1的键

注意:字典值只能是1或0

非常感谢您的帮助。

字符串abc=233423,99;
String   uint
 "324"   0
 "233"   1
 "32"    0
 "423"   1
 "23435" 0
var子集=abc.Split','; var result=masterData.ToDictionaryk=>k,k=>Convert.ToUInt32subset.Containsk; var reversedResult=result.Wherep=>p.Value==1.Selectp=>p.Key.ToArray

您可以使用Concat将第一个数组和拆分的字符串相加,然后使用GroupBy将相同的数字分组,然后仅从中创建字典,重复项的计数将大于1

var abcArray = abc.Split(',');
masterData.ToDictionary(p => p, p => (uint)(abcArray.Contains(p) ? 1 : 0));
若要反转,请选择值为1的所有字符串,并连接sting

 var dict = masterData
            .Concat(abc.Split(','))
            .GroupBy(x => x)
            .ToDictionary(k => k.Key, v => v.Count() > 1 ? 1 : 0);

如何进行反向操作?请澄清您在尝试编写短于plz的代码时遇到的具体问题给我代码。举个例子,说明你们是如何尝试的,这会让问题变得更好。
string result = string.Join(",", dict.Where(x => x.Value > 0)
                                     .Select(k => k.Key)
                                     .ToArray());