Linq с пользовательским основным набором

Используйте regex для решения этой проблемы путем сопоставления только чисел. match вернет массив чисел, поэтому используйте оператор распространения , чтобы установить для всех параметров значение Date.

const res = new Date(...'new Date(0,0,0,11,13,16)'.match(/[0-9]+/g));

console.log(res);

7
задан AndreasN 17 December 2008 в 11:56
поделиться

2 ответа

Проблема состоит в том что LINQ через дополнительные методы на IEnumerable<T>, знает, как создать Массивы, Списки и Словари, это не знает, как создать Ваш пользовательский набор. У Вас мог быть свой пользовательский набор, имеют конструктора, который берет IEnumerable<T> или Вы могли записать Вам. Первый позволил бы Вам использовать результат LINQ в своем конструкторе непосредственно, последний позволит Вам украшать оператор LINQ своим расширением и возвращать набор, которого Вы требуете. Так или иначе необходимо будет сделать своего рода преобразование от универсального набора до специализированного набора - или в конструкторе или в расширении. Или Вы могли сделать обоих...

public static class MyExtensions
{
     public static ProductCollection
                      ToProducts( this IEnumerable<Product> collection )
     {
          return new ProductCollection( collection );
     }
}


public class ProductCollection : BaseCollection<Product>
{
     ...

     public ProductCollection( IEnumerable<Product> collection )
              : base( collection )
     {
     }

     ...
 }


var products = (from p in HugeProductCollection
                where p.Vendor = currentVendor
                select p).ToProducts();
7
ответ дан 7 December 2019 в 05:32
поделиться

Я могу предложить Вас путь в этом, Вы не должны перечислять набор 2 раза:

abstract class BaseCollection<T> : List<T>
{
    public BaseCollection(IEnumerable<T> collection)
        : base(collection)
    {
    }
}

class PruductCollection : BaseCollection<Product>
{
    public PruductCollection(IEnumerable<Product> collection)
        : base(collection)
    {
    }
}

var products = from p in HugeProductCollection
               where p.Vendor = currentVendor
               select p;
PruductCollection objVendorProducts = new PruductCollection(products);
2
ответ дан 7 December 2019 в 05:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: