0

必要な結果を得ることができません。これを実行してください。

次のような結果が得られるliqクエリを呼び出しています

"99,85,34,20,1,0.5" as key
"5000199,5000185,5000134,5000120,5000101,5000005"

これを分割した後のキーと値の形式のようにしたい...のように

key            value
99             5000199
85             5000185

リストのようなキーは 99 であり、この値は 5000199 である必要があります 2 番目のキーは 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();

このような。

4

4 に答える 4

4

ZipLINQ のメソッドを使用します。

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);
于 2013-09-18T08:58:39.647 に答える
1

基本的に、2 つのコレクションのインデックスに従ってキーと値のペアが必要ですか?

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)));

2 番目のコレクションEnumerable.ElementAtOrDefaultに.nullfirst

于 2013-09-18T08:59:29.350 に答える
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]);
    }
于 2013-09-18T08:58:41.973 に答える
0

物事をシンプルにします。

使用する

var pp = (from a in dc.MediaTypeMasters where a.MediaTypeID == 153 && a.ContentTypeForBilling == "valuepack" a).ToList();

それからあなたはすることができます

var dictionary = pp.ToDictionary(p => p.PartialPricePoints);
于 2013-09-18T09:03:19.143 に答える