C# C“将长字符串转换为格式”;表列[,表列]";到字典<;字符串,字符串>;

C# C“将长字符串转换为格式”;表列[,表列]";到字典<;字符串,字符串>;,c#,linq,lambda,C#,Linq,Lambda,我有一个字符串,其中包含由逗号分隔的Tablename.Colname列表。例如: "SoMast.SoNo,ItemMast.ItemNo,ItemDetail.ItemId" 我想把这个字符串转换成一个Dictionary对象,其中第一个字符串是表名,第二个是列名,行数越少越好 编辑:感谢您的快速回复。有一个问题我在遇到它之前没有提到,如果上面的字符串包含重复的表名,例如“Somast.SoNo,Somast.Custno”,字典将失败是否有其他解决方案?使用以下方法: var dict

我有一个字符串,其中包含由逗号分隔的
Tablename.Colname
列表。例如:

"SoMast.SoNo,ItemMast.ItemNo,ItemDetail.ItemId" 
我想把这个字符串转换成一个
Dictionary
对象,其中第一个字符串是表名,第二个是列名,行数越少越好

编辑:感谢您的快速回复。有一个问题我在遇到它之前没有提到,如果上面的字符串包含重复的表名,例如
“Somast.SoNo,Somast.Custno”
,字典将失败是否有其他解决方案?

使用以下方法:

var dict = list.Split(',').Select (split => split.Split('.')).ToDictionary (item => item[0], item => item[1]);

有关详细信息,请参阅。

拆分单个字符串

text.Split(',').ToDictionary(x=> x.Split('.').First(), x=> x.Split('.').Last());

我认为下面的代码可以工作

var splitted=yourString.Split(',');
var resultDict=新字典();
foreach(splittet中的var条目){
var splittedEntry=entry.Split('.');
ResultDisct.Add(splittedEntry[0],splittedEntry[1]);
}
这应该可以做到:

str.Split(',').Select(s => s.Split('.')).ToDictionary(x => x[0], x => x[1]);

要按照编辑中的描述处理重复项,您可能需要使用
查找
,而不是字典。将代码改为使用
.ToLookup
<代码>查找类似于字典,但它包含特定键的一组值。

首先向我们展示一下您的努力如何?我首先使用string.Split(“,”)将其转换为列表。从那里,我使用Split('.')循环并提取第二部分,然后将这些部分添加到Dictionary对象中。代码太简单了,我觉得不值得发布它。Thx尽管如此。@ConnieFernandez发布代码总是一个好主意,不管它多么琐碎,只是为了让人们相信你不希望他们为你工作。作为对你编辑的回应。你希望它如何工作?也许ILookup能更好地满足您的需求?我会尝试学习和使用ILookup(直到现在我才听说)。