我无法得到我需要的结果 请仔细阅读。
我正在调用liq查询,这会给我一些像
的结果"99,85,34,20,1,0.5" as key
"5000199,5000185,5000134,5000120,5000101,5000005"
我希望在分割它们之后就像键和值格式一样......比如
key value
99 5000199
85 5000185
列表中的键应为99,其值应为5000199 第二个键应为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();
喜欢这个。
答案 0 :(得分:4)
使用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);
答案 1 :(得分:1)
所以基本上你想根据两个集合中的索引来获得键值对吗?
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
。
答案 2 :(得分:0)
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]);
}
答案 3 :(得分:0)
简单易行。
使用
var pp = (from a in dc.MediaTypeMasters where a.MediaTypeID == 153 && a.ContentTypeForBilling == "valuepack" a).ToList();
然后你可以做
var dictionary = pp.ToDictionary(p => p.PartialPricePoints);