0

IEnumerable をループしようとしていますが、各 ChartClass の値が変更されていないため、何らかの理由で foreach ループを通過しません。

public IEnumerable<ChartClass> get(string ID, string buildname, string placeholder)
    {
        var context = new Entities();
        var metrics = from c in context.VSTS_CODE_METRICS
                      where c.BUILD_NAME == buildname && c.OBJECT_TYPE == "Namespace"
                      group c by c.BUILD_ID into g
                      select new ChartClass
                      {
                          Build_ID = g.Key,
                          BuildTrim = g.Key,
                          Index = g.Average(c => c.MAINTAINABILITYINDEX_).Value
                      };
        foreach (var i in metrics)
        {
            int num = i.BuildTrim.LastIndexOf('_');
            i.BuildTrim = "2";
        }       
        return metrics;
    }

各 ChartClass の BuildTrim フィールドを「2」に変更しようとしていますが、何らかの理由で変更されません

4

2 に答える 2

3

クエリで BuildTrim を「2」に設定してみませんか?

public IEnumerable<ChartClass> get(string ID, string buildname, string placeholder)
    {
        var context = new Entities();
        var metrics = from c in context.VSTS_CODE_METRICS
                      where c.BUILD_NAME == buildname && c.OBJECT_TYPE == "Namespace"
                      group c by c.BUILD_ID into g
                      select new ChartClass
                      {
                          Build_ID = g.Key,
                          BuildTrim = "2",//g.Key,
                          Index = g.Average(c => c.MAINTAINABILITYINDEX_).Value
                      };
        /*foreach (var i in metrics)
        {
            int num = i.BuildTrim.LastIndexOf('_');
            i.BuildTrim = "2";
        }*/       
        return metrics;
    }
于 2013-10-10T18:48:35.987 に答える
1

metricsですIQueryable。オブジェクトをデータベースに反復するたびに、要求しているアイテムをクエリし、それらを指定したオブジェクトに入れ、それらのオブジェクトを反復できるようにします。返されるオブジェクトを変更していますが、シーケンスを再度繰り返すと、それらの同じメモリ内オブジェクトは使用されません。代わりに、もう一度データベースに戻り、変更を含まない新しいクエリをプルバックします。

他の回答で述べたように、破棄されようとしているオブジェクトを変更するのではなく、最初のSelect呼び出しを単に変更して目的の値に設定すると、クエリは意図したとおりに機能します。BuildTrim

于 2013-10-10T18:53:02.927 に答える