C# 字典到逗号分隔的字符串?
我需要的是有一个字典,其中包含所有masterData数组值的字符串键&仅对于字符串abc中的那些键,将值设置为1。所有其他键的值都需要为0。在这种情况下,字典应该是string类型&value应该是uint类型。在这种情况下,字典应如下所示: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
// 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());