[英]Storing result of linq in keyvaluepair with key and value after spliting the String using comma seperator
我無法獲得所需的結果,請仔細閱讀。
我打電話給liq查詢,這將給我結果
"99,85,34,20,1,0.5" as key
"5000199,5000185,5000134,5000120,5000101,5000005"
我希望在拆分它們后像鍵和值格式一樣...
key value
99 5000199
85 5000185
在列表中,例如key應為99,其值應為5000199,second key應為85,其值應為5000185
我正在使用的查詢是
var pp = (from a in dc.MediaTypeMasters
where a.MediaTypeID == 153 &&
a.ContentTypeForBilling == "valuepack"
select new KeyValuePair<String, String>
(a.PartialPricePoints, a.ContentTypeID))
.ToList();
像這樣。
使用LINQ中的Zip
方法:
var keys = "99,85,34,20,1,0.5";
var values = "5000199,5000185,5000134,5000120,5000101,5000005";
var results = keys.Split(',').Zip(values.Split(','), (k, v) =>
new KeyValuePair<int, int>(int.Parse(k), int.Parse(v)));
然后,您還可以創建Dicrionary<int, int>
:
var dict = results.ToDictionary(x => x.Key, x => x.Value);
因此,基本上,您想要根據鍵值對在兩個集合中的索引進行操作嗎?
string[] first = str1.Split(',');
string[] second= str2.Split(',');
IEnumerable<KeyValuePair<string, string>> pairs = first
.Select((s, i) => new KeyValuePair<string, string>(s, second.ElementAtOrDefault(i)));
需要注意的是Enumerable.ElementAtOrDefault
返回null
,如果第二個集合不包含盡可能多的項目的first
。
string key = "99,85,34,20,1,0.5";
string val = "5000199,5000185,5000134,5000120,5000101,5000005";
var keyArr = key.Split(',');
var valArr = val.Split(',');
var dictionary = new Dictionary<string, string>();
for (int i = 0; i < keyArr.Length; i++)
{
dictionary.Add(keyArr[i], valArr[i]);
}
讓事情變得簡單。
采用
var pp = (from a in dc.MediaTypeMasters where a.MediaTypeID == 153 && a.ContentTypeForBilling == "valuepack" a).ToList();
那你可以做
var dictionary = pp.ToDictionary(p => p.PartialPricePoints);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.