У меня есть LINQ
, который возвращает некоторые данные.Он состоит из двух свойств ChannelType и ChannelName.Иногда тип канала будет нулевым, а его число - только 1, поскольку канал еще не установлен.
Запрос LINQ:
var channels = (from channel in db.UriData
join device in db.Devices on channel.SerialNumber equals device.SerialNumber
join active in db.ActiveChannels on channel.ChannelName equals active.ChannelName
where channel.ChannelName.Contains(active.ChannelName) &&
device.Active &&
channel.SerialNumber == serial
select new { channel.ChannelName, channel.ChannelType }).Distinct().ToList().OrderByDescending(x => x.ChannelName);
Данные, возвращаемые из LINQ
query:
{ ChannelName = "v1", ChannelType = null }
{ ChannelName = "v1", ChannelType = "Electricity" }
{ ChannelName = "v2", ChannelType = null }
{ ChannelName = "v2", ChannelType = "Electricity" }
{ ChannelName = "v3", ChannelType = null }
{ ChannelName = "v3", ChannelType = "Electricity" }
{ ChannelName = "v4", ChannelType = null }
Из данных вы увидите, что есть два значения для ChannelName, одно является нулевым, а другое - нет.Я хочу иметь возможность выбрать значение Max()
, поэтому я могу игнорировать ноль, когда есть два имени канала.Max()
будет иметь дело с одиночным ChannelName, которое является нулевым, как показано в первой записи данных.
Как выбрать Max()
и удалить пустые значения, если существует более одного ChannelName.Например, если мы используем ChannelName v1, как показано в данных, мы можем видеть, что есть два v1.Я хочу получить Max () и игнорировать / удалить нулевое значение, если существует более одного v1.
Я предполагаю, что могу сделать это с помощью другого LINQ
запроса, такого как:
var c = channels.Select(x => new { x.ChannelName, x.ChannelType }).Max();
Ожидаемый результат:
{ ChannelName = "v1", ChannelType = "Electricity" }
{ ChannelName = "v2", ChannelType = "Electricity" }
{ ChannelName = "v3", ChannelType = "Electricity" }
{ ChannelName = "v4", ChannelType = null }
TIA