2013-03-21 2 views
0
public class ConvertedReading 
{ 
    public int DatePointID { get; set; } 
    public string DatapointName { get; set; } 
    public DateTime ReadingDate { get; set; } 
    public double Value { get; set; } 
} 

Учитывая сборник ниже:LINQ с помощью лямбда-синтаксис

IEnumerable<ConvertedReading> readingData; 

с помощью C#, написать Постулаты LINQ с использованием синтаксиса лямбда для вывода коллекцию из следующих действий:

public class DataPointTotal 
{ 
    public string DatapointName{get; set;} 
    public double Total{get; set;} 
} 

один элемент должен возвращается на datepointID

Итого должно быть представлено суммой convertedReading.valye, релевантные каждому datePointID

Я пробовал со следующим, nit довольно shre, если он работает, я не могу получить правильную сумму.

var subtotals = from x in ConvertedReading group x by x.DatapointName into g select new { Type = x.DatapointName , SubTotal = g.Sum(x => x.Total) }; 

Правильно ли синтаксис?

Спасибо, ребята,

+0

вара = от промежуточных итогов й в ConvertedReading группа х с x.DatapointName в г выбрать новый {Type = x.DatapointName, субтотальный = g.Sum (х => x.Total)}; – Alborz

+2

@Alborz: Отредактируйте это на вопрос и объясните, что с ним не так ... –

ответ

2

Ответ таков:

var result = readingData.GroupBy(r => r.DataPointID) 
         .Select(g => new DataPointTotal 
           { 
            DataPointName = g.First().DataPointName, 
            Total = g.Sum(r => r.Value) 
           }); 

Но я предполагаю, что это обман учитывая, что я написал вопрос! ;)

+0

Почему вы попросили ответ в «синтаксисе лямбда» (фактически называемом синтаксисом метода)? Не кажется справедливым ограничивать кандидата как такового ... –

+0

Я не знал, что это называлось синтаксисом метода !! Вопросы не все должны быть завершены, они должны оценить текущую базу знаний людей. Кроме того, мы используем синтаксис «method» на работе, поскольку он читает лучше (субъективный). Хорошо на @Alborz в любом случае, когда я не знаю, как что-то сделать, я также перехожу в интернет! – Oliver

+0

Да, определенно называется Method Syntax. [См. Здесь] (http://msdn.microsoft.com/en-gb/library/vstudio/bb397947.aspx). Существует классный продукт под названием [Technically Compatible] (http://www.technicallycompatible.com/) для тестирования, анализа, сравнения и отчетности по набору персонала. У этого есть десятки тысяч вопросов, подобных этому. Подключите! :) –

0
var result = db.ConvertedReading.GroupBy(i=>i.DatapointName).Select(g => new DataPointTotal(){DatapointName = g.DatapointName, Total = g.Sum(i=>i.Total)}); 
+0

Неправильно. Вы не можете предположить, что 'DatapointName' и' DataPointID' связаны друг с другом. –

+0

@flem, код основан на информации в вопросе, я просто преобразовал свой код в лямбда-выражения без каких-либо предположений :) –

Смежные вопросы