powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перевести из Linq
25 сообщений из 80, страница 1 из 4
Перевести из Linq
    #39148649
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парни. Нужно перевести конструкцию выполненную на Linq в обычный "человечий" код. Совсем не знаком с Linq. Затупил на ".Select(mt => new { MediaType = mt, Delta = Math.Abs(desiredBitRate - mt.AverageBytesPerSecond * 8) } )". Помогите пожалуйста.

Было:
Код: c#
1.
2.
3.
4.
5.
6.
GetOutputMediaTypes(audioSubtype)
.Where(mt => mt.SampleRate == inputFormat.SampleRate && mt.ChannelCount == inputFormat.Channels)
.Select(mt => new { MediaType = mt, Delta = Math.Abs(desiredBitRate - mt.AverageBytesPerSecond * 8) } )
.OrderBy(mt => mt.Delta)
.Select(mt => mt.MediaType)
.FirstOrDefault();



Стало:
Код: c#
1.
2.
3.
4.
5.
6.
7.
 foreach (MediaType mediaType in GetOutputMediaTypes(audioSubtype))
{
    if ((mediaType.SampleRate == inputFormat.SampleRate) && (mediaType.ChannelCount == inputFormat.Channels))
    {
         ???//.Select(mt => new { MediaType = mt, Delta = Math.Abs(desiredBitRate - mt.AverageBytesPerSecond * 8) } )???
    }
}



Вот еще один вариант, требующий проверки знатоков. Все правильно перевел?

Было:
Код: c#
1.
2.
3.
4.
5.
6.
GetOutputMediaTypes(audioSubtype)
.Where(mt => mt.SampleRate == sampleRate && mt.ChannelCount == channels)
.Select(mt => mt.AverageBytesPerSecond*8)
.Distinct()
.OrderBy(br => br)
.ToArray();



Стало:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 List<int> bitRates = new List<int>();
   
 foreach (MediaType mediaType in GetOutputMediaTypes(audioSubtype))
{
    if ((mediaType.SampleRate == sampleRate) && (mediaType.ChannelCount == channels))
    {
        bitRates.Add(mediaType.AverageBytesPerSecond * 8);
    }
}

bitRates.Sort();
return bitRates.ToArray();



Заранее огромное СПАСИБО!
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148714
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стесняюсь спросить, а нафига из линк переводить в "это"?
Код: c#
1.
.Select(mt => new { MediaType = mt, Delta = Math.Abs(desiredBitRate - mt.AverageBytesPerSecond * 8) } )



Тут создается из коллекции по типу MediaType коллекция по анонимному типу с тремя полями
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148715
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. с 2умя полями
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148760
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisСтесняюсь спросить, а нафига из линк переводить в "это"?
Код: c#
1.
.Select(mt => new { MediaType = mt, Delta = Math.Abs(desiredBitRate - mt.AverageBytesPerSecond * 8) } )



Тут создается из коллекции по типу MediaType коллекция по анонимному типу с тремя полями

Нужно одну библиотеку внедрить в проект который написан под 2.0
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148812
Abobo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конструкция в Select создаёт объекты на каждый элемент из исходной последовательности, полученной с помощью GetOutputMediaTypes. Только сначала фильтром where проходится, а потом создаёт. Поэтому первая часть вашего "стало" правильная.

Т. е. сначала нужно собрать все объекты в коллекцию, как у вас во втором "стало", только определённого кастомного типа (анонимного или конкретного - как вам больше подойдёт), а не просто int. Т. е. конструкцию с new из select копируете в ваш if.

Затем ещё один цикл по получившейся коллекции, который упорядочивает по Delta.

Затем забрать первый элемент получившейся коллекции и взять его поле MediaType.

Когда распишете всю эту простыню, сравните потом с изначальным LINQ-выражением, проникнитесь краткостью и удобством и ВПЕРЁД - изучать LINQ. Сегодняшний дотнет без линка, это как... ну, это как не знать про классы в ООП. Кстати, также изучите анонимные типы, инициализаторы объектов, делегаты, особенно встроенные в дотнет, типа функций, предикатов, действий (Func, Predicate, Action), и прочее - как видите, всё это с линком очень тесно используется в современном дотнете.
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148813
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavel,

Создайте класс с двумя полями MediaType и Delta. Значения для полей можете присваивать в конструкторе класса. А уже в список (List/Dictionary) добавляйте сами экземпляры класса
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148814
Abobo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelPallarisСтесняюсь спросить, а нафига из линк переводить в "это"?
Код: c#
1.
.Select(mt => new { MediaType = mt, Delta = Math.Abs(desiredBitRate - mt.AverageBytesPerSecond * 8) } )



Тут создается из коллекции по типу MediaType коллекция по анонимному типу с тремя полями

Нужно одну библиотеку внедрить в проект который написан под 2.0
Какое-нибудь РЖД, Газпром, Сбербанк? Или там до сих пор Дельфи с Паскалем?
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148816
Abobo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AboboGorloPavelпропущено...


Нужно одну библиотеку внедрить в проект который написан под 2.0
Какое-нибудь РЖД, Газпром, Сбербанк? Или там до сих пор Дельфи с Паскалем?
Ну просто реально может быть даже экономически выгоднее переписать всё на новый дотнет, чем заставлять кучу народу из команды поддерживать такие простыни кода вместо удобных линк-выражений и прочих плюшек из современного дотнета.
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148817
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abobo,

Человеку не нужно всё "это" современное. Задача запускать всё на .NET 2.0
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148818
Abobo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VSVLADAbobo,

Человеку не нужно всё "это" современное. Задача запускать всё на .NET 2.0
Да я понимаю. Просто, как я сказал, такую древность поддерживать - может, дешевле переписать по-нормальному всё будет? Да и видно же, до чего программистов своих эта контора довела - не знают, что такое LINQ, инициализаторы и прочую азбуку. Их из подвалов 10 лет не выпускали, чтоли, держали на голодном 2.0?
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148820
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AboboVSVLADAbobo,

Человеку не нужно всё "это" современное. Задача запускать всё на .NET 2.0
Да я понимаю. Просто, как я сказал, такую древность поддерживать - может, дешевле переписать по-нормальному всё будет? Да и видно же, до чего программистов своих эта контора довела - не знают, что такое LINQ, инициализаторы и прочую азбуку. Их из подвалов 10 лет не выпускали, чтоли, держали на голодном 2.0? про древность мне понравилось
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148825
Abobo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAboboпропущено...

Да я понимаю. Просто, как я сказал, такую древность поддерживать - может, дешевле переписать по-нормальному всё будет? Да и видно же, до чего программистов своих эта контора довела - не знают, что такое LINQ, инициализаторы и прочую азбуку. Их из подвалов 10 лет не выпускали, чтоли, держали на голодном 2.0? про древность мне понравилось
ХР наше всё!
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148826
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AboboskyANAпропущено...
про древность мне понравилось
ХР наше всё!нет, Kanban
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148829
Abobo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAboboпропущено...

ХР наше всё!нет, Kanban
Вот и правда, что кабан свинья, раз заставляет команду поддерживать всякое овно - "патамушта закащик хочит страннава".
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148833
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AboboskyANAпропущено...
нет, Kanban
Вот и правда, что кабан свинья, раз заставляет команду поддерживать всякое овно - "патамушта закащик хочит страннава".обычные цикл - это значит уже "всякое овно".. да Вы.. Классный
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148880
Abobo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAboboпропущено...

Вот и правда, что кабан свинья, раз заставляет команду поддерживать всякое овно - "патамушта закащик хочит страннава".обычные цикл - это значит уже "всякое овно".. да Вы.. Классный
Ну я классный, а "обычные циклы" в таких случаях - всякое овно. Вы бы ещё сказали, что на тракторах пашут только хипстеры, а настоящие мужики лопатами всё поле перекапывают.

Тут недавно один был, который "руки отрывал за LINQ". Трудно, говорит, дебажить эти выражения. Предложил ему вообще компьютер выкинуть и отойти от дел - чтобы совсем легко стало.

skyANA, а у вас где водораздел проходит между циклами и линком? Т. е. когда вы решаете, что "линк ещё можно", а "циклы пока нельзя"? Или сразу руки отрываете за любые линк-выражения, и принудительно насаждаете циклы?
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148884
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не глубокий знаток C#, только учусь, был заинтригован LINQ, прочитал недавно книжку , там русским по белому написано "цель создания: упростить разаработку, но не ускорить работу кода. Хотите супер скоростей - не используйте LINQ". В 99% случаев важно удобство, т.е. компактность и простота кода, тут LINQ как раз кстати.
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148888
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AboboskyANAпропущено...
обычные цикл - это значит уже "всякое овно".. да Вы.. Классный
Ну я классный, а "обычные циклы" в таких случаях - всякое овно. Вы бы ещё сказали, что на тракторах пашут только хипстеры, а настоящие мужики лопатами всё поле перекапывают.

Тут недавно один был, который "руки отрывал за LINQ". Трудно, говорит, дебажить эти выражения. Предложил ему вообще компьютер выкинуть и отойти от дел - чтобы совсем легко стало.

skyANA, а у вас где водораздел проходит между циклами и линком? Т. е. когда вы решаете, что "линк ещё можно", а "циклы пока нельзя"? Или сразу руки отрываете за любые линк-выражения, и принудительно насаждаете циклы?я не насаждаю ни линк, ни циклы, ни монады :) не намекаю на производительность. Просто забавно.

Что вы думаете о Kotlin?
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148901
Abobo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЧто вы думаете о Kotlin?
Джет Брейнс маются хернёй. Кучка талантливых программистов решила поработать занозой в заднице у всяких крупняков, типа МС, в надежде, что их или их продукты у них этот крупняк купит. Судя по малипусенькому ревенью (по-быстрому гуглится оценка что-то около 1 мегабакса или ниже, хотя, для 500 сотрудников это как-то вообще за гранью - думаю, они всё же гораздо больше зарабатывают, а эти оценки - фигня; вобщем, хрен с ним, с ревенью) и Котлину, который спустя несколько лет всё ещё бета, дела у них идут не очень. МС не хочет покупать их Решарпер, и постепенно наполняет Студию его функциональностью. Котлин остаётся игрушкой для глупых хипстеров (ещё болшей игрушкой, чем Свифт для иосников). Остаётся одна Идея, которая на винде не нужна (ибо есть Студия), а на линуксах всяких много не заработаешь.

Вобщем, думаю, не стоит ставить на эти котлины и вообще на Джет Брейнс. Либо их или их продукты купят с последующими похоронами, либо они просто разорятся, когда уже ничего толком не смогут предложить, а крупняк все их основные идеи внедрит/разработает у себя сам. И пусть вас не вводят в забдуждение слюнтявые восторги на всяких хабрах - там те ещё гики-фанаты всякого "хочется странного".

Ну, это так, взгляд дилетанта со стороны. Про Котлин прочитал по-быстрому толкьо щас, а до этого только пару раз слышал такое слово...

UPD. А, вот оно откуда пошло. Котлин - класс кораблей советских, а в Джет Брейнс окопались старпёры-имперцы, тоскующие по СССР, ненавидящие всё западное и в душе стремящиеся "отомстить за всё этим проклятым американцам". Иначе трудно понять упорство этих русских в явно безнадёжной возне с этими ихними котлинами, решарперами и идеями. Ну да, ребята талантливы. Но их бы энергию да в нужное капиталистическое русло, а не в пустое бодалово без дальнейших существенных перспектив. Как я уже сказал, максимум, что им грозит, это покупка крупняком и похороны их продуктов как отдельных вещей - будут внедрены в уже существующие разработки крупняка. Ну а за то, что они русские и ваще, навряд ли их кто купит (эти иваны ещё, поди, и продаваться не хотят) - так что их просто обанкротят. Но свой след в истории они таки оставят, как разработчики кучи всякого "хочется странного". Ну а обычным разработчикам не советую идти на поводу у них и не завязываться сильно на их продукты - в лучшем случае будут потом драть втридорога, а в худшем - см. про похороны и банкротство.
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148903
Abobo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, реально щас пошерстил статьи на Хабре. Кучка укуренной хипстоты пытается что-то калякать на бета-языке уже второй год. Убивать надо за такое, если это в продакшон идёт.

А джетбрейнсы ваще обнаглели - без стеснения используют Котлин как иглу для своей Идеи. Видно, всё же решили не продаваться, а бодаться сами. Значит, будут драть втридорога, а потом их обанкротят - т. е. хипстоте, повёдшейся на них, достанется по самому худшему варианту. И поделом.
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148911
Abobo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavel,

если хотите полностью съэмулировать LINQ, то, фактически, на каждую конструкцию, типа Select, Order, Where и пр. вам надо отдельный цикл городить. Ведь линк работает через итераторы последовательно, поэтому каждый следующий метод последовательно проходит по результатам предыдущего метода. Можете, конечно, попытаться сгородить вложенные циклы или сразу несколько операций в одном выполнить, только тогда вероятность ошибиться при этом будет больше, чем в таких простых линк-выражениях, как у вас или когда вы их развернёте в отдельные циклы.
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148919
Abobo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

чёт проблемки какие-то у этого вашего "Котлина" - плохо на многих ядрах работает, как докладуют с полей. Чём там с многоядерной работой у проклятой Студии от проклятой МС?
...
Рейтинг: 0 / 0
Перевести из Linq
    #39148995
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abobo, эвано как Вас бомбануло :) не читал
...
Рейтинг: 0 / 0
Перевести из Linq
    #39149008
Abobo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAbobo, эвано как Вас бомбануло :) не читал
Читать всегда не поздно научиться. А тут главное, локти потом не кусать. Всякие борланды и эмбаркадеры покруче так в разы были, чем эти нынешние джет брейнсы. А где они щас? Так же, где и Дельфи.
...
Рейтинг: 0 / 0
Перевести из Linq
    #39149037
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AboboskyANAAbobo, эвано как Вас бомбануло :) не читал
Читать всегда не поздно научиться.Не вижу смысла учиться читать вбросы про овно, хипстеров, херню, проклятую студию и проклятый МС. Смысла ноль, юмора ноль, засим проскипал :)
...
Рейтинг: 0 / 0
25 сообщений из 80, страница 1 из 4
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перевести из Linq
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]