목록 항목과 제공된 double에 대해 산술 연산을 수행하는 목록에 확장 메서드를 작성한 다음 결과를 목록에 다시 씁니다. 예 :목록 항목에 산술 연산을 수행하는 목록의 확장 메서드
public class Datum
{
public DateTime DateTime;
public double Value;
}
public static class DateExt
{
public static double Average(this IEnumerable<Datum> @this)
{
return @this.Average(datum => datum.Value);
}
public static double Sum(this IEnumerable<Datum> @this)
{
return @this.Sum(datum => datum.Value);
}
public static IEnumerable<Datum> InTimeRange(this IEnumerable<Datum> @this, DateTime start, DateTime end)
{
return from datum in @this
where (start <= datum.DateTime && datum.DateTime < end)
select datum;
}
}
이 나에게 다음과 같은 작업을 수행 할 수 있습니다 : 두 날짜 사이의 모든 항목에 걸쳐 합계를 반환
return somelist.InTimeRange(startdate, enddate).Sum()
. 이제 double을 취하여 그에 따라 목록을 업데이트하는 확장 메서드를 만들고 싶습니다. 예 :
return somelist.InTimeRange(startdate, enddate).Addition(double val)
은 시작 날짜와 종료 날짜 사이에있는 목록의 각 항목에 val을 추가해야합니다. 나는 이것을 시도했다 :
public static double Addition(this IEnumerable<Datum> @this, double val)
{
return @this.(datum => datum.Value)+= val;
}
그러나 이것은 효과가 없다.
목록 항목이 10이고 val = 5 인 경우 같은 위치에있는 업데이트 된 목록 항목은 의심의 여지가 없도록 15 일 것입니다.
모든 아이디어는 높이 평가됩니다.
감사합니다. 당신은 내가이 파괴적인 작업입니다 있으리라 믿고있어 컬렉션을 업데이트 말할
가 작동하지 않는 이유는 무엇입니까? 오류 메시지 란 무엇이며 어떻게 작동하는지 알려 주어 잘못된 것이라고 생각하십니까? 그 외에 - 처음부터 코드가 틀린 것처럼 보입니다 -'@this. (datum ...)'무엇을 의미합니까? 어떤 방법이든 호출하지 마십시오 – Pako
"작동하지 않는다"고 말하면됩니다. 당신이 기대하는대로하지 못하거나 예외를 던지거나 조용히 실패합니까? – Adrian
식별자가 필요합니다. – nik