Форум программистов, компьютерный форум, киберфорум
Наши страницы

LINQ

Войти
Регистрация
Восстановить пароль
 
FILATOV_1990
0 / 0 / 0
Регистрация: 04.09.2015
Сообщений: 46
#1

Отсортировать строки в соответствии с узлами - LINQ

09.10.2015, 12:04. Просмотров 254. Ответов 1
Метки нет (Все метки)

У меня есть массив(текстовый файл) из 1000 строк, разбитый запятыми, вот пример строк :

#,LM,Jam ID,Date Occurred,Time Jammed,Rc,Rt,Cl,Jam Text
001,03,043,04/07/15 16:02,00:00:25,00,00,00,Indexer #1 shot pin state is unknown
002,02,030,09/24/15 16:39,00:00:04,00,00,01,ATT unable to detect tray at Gripper
003,01,044,09/24/15 16:38,00:00:25,00,00,01,Main tray is hanging on guides or stuck in gripper.
004,01,044,09/24/15 16:36,00:01:51,00,01,00,Main tray is hanging on guides or stuck in gripper.
005,02,030,09/24/15 15:11,00:00:04,00,00,01,ATT unable to detect tray at Gripper
006,01,044,09/24/15 15:10,00:00:27,00,01,00,Main tray is hanging on guides or stuck in gripper.
007,01,044,09/24/15 15:10,00:00:21,00,01,00,Main tray is hanging on guides or stuck in gripper.
008,02,030,09/21/15 15:17,00:00:19,00,00,01,ATT unable to detect tray at Gripper
009,01,045,09/21/15 15:15,00:01:32,00,01,00,Aux tray is hanging on guides or stuck in gripper.
010,01,045,09/21/15 15:15,00:00:17,00,01,00,Aux tray is hanging on guides or stuck in gripper.
011,04,030,09/18/15 19:28,00:00:55,01,02,00,Missing sort device(s) on sort boat. B1
012,05,029,09/18/15 19:24,00:01:39,06,06,01,TS Picker missing parts:Ck #1 A1
013,05,016,09/18/15 19:21,00:01:12,00,01,00,Picker detects parts stuck in nests:Ck #1 A1
014,05,016,09/18/15 19:20,00:00:23,00,01,00,Picker detects parts stuck in nests:Ck #1 A1
015,05,016,09/18/15 19:17,00:01:07,02,03,00,Picker detects parts stuck in nests:Ck #1 A1
016,05,016,09/18/15 19:15,00:00:17,00,01,00,Picker detects parts stuck in nests:Ck #1 A1
017,05,029,09/18/15 01:52,00:00:18,00,01,00,TS Picker missing parts:Ck #1 A1
018,05,029,09/17/15 17:09,00:00:05,00,01,00,TS Picker missing parts:Ck #1 A1
019,05,029,09/17/15 17:05,00:00:06,00,01,00,TS Picker missing parts:Ck #1 A1
020,05,029,09/17/15 16:35,00:00:07,00,01,00,TS Picker missing parts:Ck #1 A1
021,05,029,09/17/15 15:37,00:00:08,00,01,00,TS Picker missing parts:Ck #1 A1
022,02,030,09/17/15 15:22,00:00:56,01,01,01,ATT unable to detect tray at Gripper
023,05,029,09/17/15 12:17,02:29:47,01,02,00,TS Picker missing parts:Ck #1 A1
024,02,016,09/17/15 12:25,00:02:15,02,03,00,ATT unable to open the Gripper
025,05,029,09/17/15 12:11,00:00:24,00,01,00,TS Picker missing parts:Ck #1 A1
026,05,029,09/17/15 09:50,00:00:06,00,01,00,TS Picker missing parts:Ck #1 A1
027,05,029,09/17/15 09:49,00:00:10,00,01,00,TS Picker missing parts:Ck #1 A1
028,05,015,09/17/15 09:48,00:00:04,00,01,00,Picker can't detect all parts:Ck #1 A1
029,05,015,09/17/15 09:47,00:00:05,00,01,00,Picker can't detect all parts:Ck #1 A1

Я написал LINQ запрос к нему, который считает общее время,которое складывается из поля(Time Jammed) для ошибок(позиция Jam ID), но загвоздка в том , что для узлов всего их 6 (позиция LM), встречаются одинаковые по номеру ошибки. Как сгруппировать так чтобы он выдавал информацию номер узла номер ошибки общее время на ошибку ????
Вот мой LINQ запрос

C#
1
2
3
4
5
6
7
8
9
10
11
var error = (from line in readText
let a = line.Split(',')
where a.Length >= 5 && Regex.IsMatch(a[4], @"\d{2}:\d{2}:\d{2}")
let Num = a[2]
let timeAttr = a[4].Split(':')
let timeUsage = TimeSpan.FromHours(int.Parse(timeAttr[0])) + TimeSpan.FromMinutes(int.Parse(timeAttr[1])) + TimeSpan.FromSeconds(int.Parse(timeAttr[2]))
where timeUsage <= TimeSpan.FromHours(2)
select new { Num, timeUsage } into Uzel
group Uzel by Uzel.Num into g
select new { Num = g.Key, TotalTime = new TimeSpan(g.Sum(arg => arg.timeUsage.Ticks)), AverageTime = new TimeSpan((long)g.Average(arg => arg.timeUsage.Ticks)) }
);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2015, 12:04
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Отсортировать строки в соответствии с узлами (LINQ):

Отсортировать строки матрицы в соответствии с количеством положительных элементов в каждой строке - VBA
Написать программу на VBA, которая позволяет сортировать строки прямоугольной матрицы в соответствии с количеством положительных элементов...

Отсортировать массив в соответствии с индексами - C#
Дан массив1 с размерностью n, в каждую ячейку записаны значения (тип разный). Дан массив2 с той же размерностью в котором записаны индексы....

Отсортировать матрицу в соответствии с убыванием характеристики - C++
Собственно задачка: есть NxN массив найти 1й столбец где входит нулик,а так же вторая часть - отсортировать в соответствии с убыванием...

Отсортировать одним из методов элементы массива в соответствии с заданием - Turbo Pascal
Создайте массив, содержащий 20 целых чисел. Отсортируйте его по возрастанию. После этого определите и выведите на экран сумму элементов с...

Как отсортировать элементы массива в соответствии с определённым условием? - C++
задание такое дан массив например 10 элементов(вообще там не важно может быть и 100 и 200 ) заполняем случайными числами от 1 до 10(от 1 до...

Отсортировать одним из методов элементы массива в соответствии с заданием - Turbo Pascal
Создайте массив А, содержащий 8 различных символов. Отсортируйте его по возрастанию. Организуйте и выведите на экран целочисленный...

1
OwenGlendower
Супер-модератор
Эксперт .NET
8654 / 7659 / 2812
Регистрация: 17.03.2014
Сообщений: 15,042
Записей в блоге: 1
10.10.2015, 00:49 #2
FILATOV_1990, если я правильно тебя понял, то ты хочешь чтобы объединялись строки которые идут друг за другом. В этом случае можно использовать метод GroupAdjacent из библиотеки MoreLinq:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var error = (
    from line in readText
    let a = line.Split(',')
    where a.Length >= 5 && Regex.IsMatch(a[4], @"\d{2}:\d{2}:\d{2}")
    let timeJammed = TimeSpan.Parse(a[4])
    where timeJammed <= TimeSpan.FromHours(2)
    select new { NodeId = a[1], JamId = a[2], timeJammed }
    )
    .GroupAdjacent(_ => new {_.NodeId, _.JamId})
    .Select(g => new {
        NodeId = g.Key.NodeId,
        JamId = g.Key.JamId,
        TotalTime = new TimeSpan(g.Sum(_ => _.timeJammed.Ticks)),
    });
Если я ошибся, то поясни точнее что тебе требуется.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2015, 00:49
Привет! Вот еще темы с ответами:

Упорядочить строки массива в соответствии с ростом характеристики строки - C++
Кто знает как решить радачу помогите please. Для заданного двумерного массива из n строк и m столбцов: Упорядочить строки массива в...

Изменить цвет строки в соответствии с значением в ячейке - VBA
Всем привет! Помогите, пожалуйста, с макросом для Excel, уже облазила все, что только можно :cry: Нужно сделать так, чтобы макрос...

Упорядочить строки матрицы по невозрастанию в соответствии с критерием - Pascal ABC
Здравствуйте!! Помогите пожалуйста с задачей! Дана целочисленная матрица размером MxN. Пусть для каждой строки матрицы определена...

Расположить строки матрицы в соответствии с убыванием характеристик - PascalABC.NET
дана целочисленная прямоугольная матрица. Характеристикой строки целочисленной матрицы назовем сумму ее отрицательных четных элементов....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru