1

文字列とその文字列の値を含むリストがありますが、リストには同じ名前の複数の文字列が含まれているため、名前をグループ化し、その名前の値を単一のエントリに追加したいと考えています。例えば

名前 ..... 値

apple -----  2
mango -----  4
banana ----  8
apple -----  4

今、私はリンゴを単一のエントリとして追加したいと考えています。

4

6 に答える 6

0

このようにgroupbyを行うことができます

yourlist.GroupBy(x=>x.YourField())
于 2013-09-03T07:41:38.107 に答える
0

あなたが何を望んでいるのかは、異なる値を取得することだと私は知っていると思います。これができる方法よりも

        List<String> MyListOfFruit = new List<String>()
        {
            {"Banana"},
            {"Banana"},
            {"Apple"}
        };
        List<String> GroupedListOfFruits = new List<String>();
        GroupedListOfFruits.AddRange(MyListOfFruit.Distinct());
        //Now GroupedListOfFruits contains two items: Banana and Apple.

それ以外の場合は、正確にどのようなリストがあるかをコードの一部として投稿してください。たぶんのリストはありKeyValuePair<String, int>ますか?

于 2013-09-03T07:45:58.750 に答える
0

キーから値を分離する - の数は可変のように見えるため、正規表現を使用して分割する方が適切だと思います。

var query = yourlist.Select(x=>{
         var arr = Regex.Split(x,@"[-]+");
         return new{
            Name = arr[0],
            Value = Int32.Parse(arr[1])
         };
    })
    .GroupBy(x=>x.Name)
    .Select(x=> new{Name = x.Key, Value=x.Sum(y=>y.Value)});

このようにして、プロパティ Name が文字列に等しく、プロパティ Value がそのような Name を持つ要素の値の合計に等しい、新しい匿名オブジェクトが作成されます。

代わりに、値の合計を値として文字列として返したい場合は、最後の選択を次のように置き換えることができます。

     .Select(x=> x.Key + " ----- " + x.Sum(y=>y.Value).ToString());

名前と値のフィールドを持つリストが既にある場合は、最初の Select を削除します。

于 2013-09-03T07:53:48.393 に答える