А не противоречит ли такая запись самой идее чистого кода?
str2.All
Все символы из str2 удовлетворяют условию str1.Count(y=>y==x)>=str2.Count(y=>y==x)
str1.Count(y=>y==x) >=
- в str1 количество искомых символов больше либо равноstr2.Count(y=>y==x)
- количеству искомых символов в str2// Эта функция считает, сколько раз каждый символ повторяется в строке
static Dictionary<char, int> CountChars(IEnumerable<char> str) =>
str
.GroupBy(x => x)
.ToDictionary(x => x.Key, x => x.Count());
var str1CharCount = CountChars(str1);
var str2CharCount = CountChars(str2);
// Истинно, когда каждый символ из второй строки повторяется меньше или столько-же раз, как и в первой.
return str2CharCount.All(x => x.Value <= str1CharCount[x.Key]);
var ingredientIds = new [] {/*тут типа айдишники*/};
var recipes = context.Recipes.Where(r => r.Ingredients.Any(i => ingredients.Contains(i.Id)).ToArray();
var cc = CatalogCategories;
CatalogCategories = new List<CatalogCategory>();
foreach(var cat in cc.Where(x=>x.Visible) {
var subCategories = new List<SubCategory>();
foreach(var subCat in cc.SubCategories.Where(x=>x.Visible) {
var catalogs = new List<Catalog>();
foreach(var catalog in subCat.Catalogs.Where(x=>x.Visible) {
var items = catalog.CatalogItems.Where(x=>x.Visible).ToList();
if(items.Any()) {
catalog.CatalogItems = items;
catalogs.Add(catalog);
}
}
if(catalogs.Any()) {
subCat.Catalogs = catalogs;
subCategories.Add(subCat);
}
}
if(subCategories.Any()) {
cat.SubCategories = subCategories;
CatalogCategories.Add(cat);
}
}
public static QueryableExtensions {
public static IQueryable<T> TakePaged<T>(this IQueryable<T> query, int take, int skip) =>
query.Take(take).Skip(skip);
}
Но я не пойму куда его запихнуть) Если впихнуть его в этот класс, где находится работа с entity, то ошибку получаю, что расширяющие методы должны быть в non-generic-классах...
await _context.A.Include(a => a.B)
.ThenInclude(a => a.C)
.Where(a => a.Id == 1)
.Select(a => new ADto
{
Id = a.Id,
C = a.C.Select(c => new CDto { Id = c.Id, Name = c.Name}).ToList(),
B = new BDto { Id = a.B.Id, Name = a.B.Name }
})
.SingleAsync();