CSHARP_CI Telegram 1443
🎯 Хитрая задача на C# для продвинутых

Твоя цель — реализовать ленивую фильтрацию по уникальному ключу без LINQ.

Условие:

Есть класс:


class User
{
public string Name { get; set; }
public int Age { get; set; }
}


Нужно написать метод UniqueBy<T, TKey>, который возвращает только уникальные элементы по ключу. Нельзя использовать LINQ (Distinct, GroupBy и т.д.). Метод должен быть ленивым — использовать yield return.

Пример:


var users = new List<User>
{
new User { Name = "Alice", Age = 30 },
new User { Name = "Bob", Age = 25 },
new User { Name = "Alice", Age = 35 },
new User { Name = "Eve", Age = 25 }
};

foreach (var user in UniqueBy(users, u => u.Name))
{
Console.WriteLine($"{user.Name}, {user.Age}");
}
// Вывод:
// Alice, 30
// Bob, 25
// Eve, 25

🧠 Решение:


public static IEnumerable<T> UniqueBy<T, TKey>(IEnumerable<T> source, Func<T, TKey> keySelector)
{
var seen = new HashSet<TKey>();
foreach (var item in source)
{
var key = keySelector(item);
if (seen.Add(key))
yield return item;
}
}


📌 Чем эта задача интересна:
Требует знания HashSet, yield return и замыканий
Работает с любыми коллекциями и даже бесконечными потоками
Часто нужна при фильтрации API-результатов, логов и UI

Ставь лайк, если хочешь больше таких продвинутых C#-задач.



tgoop.com/csharp_ci/1443
Create:
Last Update:

🎯 Хитрая задача на C# для продвинутых

Твоя цель — реализовать ленивую фильтрацию по уникальному ключу без LINQ.

Условие:

Есть класс:


class User
{
public string Name { get; set; }
public int Age { get; set; }
}


Нужно написать метод UniqueBy<T, TKey>, который возвращает только уникальные элементы по ключу. Нельзя использовать LINQ (Distinct, GroupBy и т.д.). Метод должен быть ленивым — использовать yield return.

Пример:


var users = new List<User>
{
new User { Name = "Alice", Age = 30 },
new User { Name = "Bob", Age = 25 },
new User { Name = "Alice", Age = 35 },
new User { Name = "Eve", Age = 25 }
};

foreach (var user in UniqueBy(users, u => u.Name))
{
Console.WriteLine($"{user.Name}, {user.Age}");
}
// Вывод:
// Alice, 30
// Bob, 25
// Eve, 25

🧠 Решение:


public static IEnumerable<T> UniqueBy<T, TKey>(IEnumerable<T> source, Func<T, TKey> keySelector)
{
var seen = new HashSet<TKey>();
foreach (var item in source)
{
var key = keySelector(item);
if (seen.Add(key))
yield return item;
}
}


📌 Чем эта задача интересна:
Требует знания HashSet, yield return и замыканий
Работает с любыми коллекциями и даже бесконечными потоками
Часто нужна при фильтрации API-результатов, логов и UI

Ставь лайк, если хочешь больше таких продвинутых C#-задач.

BY C# (C Sharp) programming


Share with your friend now:
tgoop.com/csharp_ci/1443

View MORE
Open in Telegram


Telegram News

Date: |

Add the logo from your device. Adjust the visible area of your image. Congratulations! Now your Telegram channel has a face Click “Save”.! You can invite up to 200 people from your contacts to join your channel as the next step. Select the users you want to add and click “Invite.” You can skip this step altogether. As five out of seven counts were serious, Hui sentenced Ng to six years and six months in jail. Over 33,000 people sent out over 1,000 doxxing messages in the group. Although the administrators tried to delete all of the messages, the posting speed was far too much for them to keep up. To view your bio, click the Menu icon and select “View channel info.”
from us


Telegram C# (C Sharp) programming
FROM American