Возвратите количество с linq-to-sql

Мы используем его с пользовательскими пулами памяти. Просто эскиз:

class Pool {
public:
    Pool() { /* implementation details irrelevant */ };
    virtual ~Pool() { /* ditto */ };

    virtual void *allocate(size_t);
    virtual void deallocate(void *);

    static Pool::misc_pool() { return misc_pool_p; /* global MiscPool for general use */ }
};

class ClusterPool : public Pool { /* ... */ };
class FastPool : public Pool { /* ... */ };
class MapPool : public Pool { /* ... */ };
class MiscPool : public Pool { /* ... */ };

// elsewhere...

void *pnew_new(size_t size)
{
   return Pool::misc_pool()->allocate(size);
}

void *pnew_new(size_t size, Pool *pool_p)
{
   if (!pool_p) {
      return Pool::misc_pool()->allocate(size);
   }
   else {
      return pool_p->allocate(size);
   }
}

void pnew_delete(void *p)
{
   Pool *hp = Pool::find_pool(p);
   // note: if p == 0, then Pool::find_pool(p) will return 0.
   if (hp) {
      hp->deallocate(p);
   }
}

// elsewhere...

class Obj {
public:
   // misc ctors, dtors, etc.

   // just a sampling of new/del operators
   void *operator new(size_t s)             { return pnew_new(s); }
   void *operator new(size_t s, Pool *hp)   { return pnew_new(s, hp); }
   void operator delete(void *dp)           { pnew_delete(dp); }
   void operator delete(void *dp, Pool*)    { pnew_delete(dp); }

   void *operator new[](size_t s)           { return pnew_new(s); }
   void *operator new[](size_t s, Pool* hp) { return pnew_new(s, hp); }
   void operator delete[](void *dp)         { pnew_delete(dp); }
   void operator delete[](void *dp, Pool*)  { pnew_delete(dp); }
};

// elsewhere...

ClusterPool *cp = new ClusterPool(arg1, arg2, ...);

Obj *new_obj = new (cp) Obj(arg_a, arg_b, ...);

Теперь можно кластеризировать объекты вместе на единственной арене памяти, выбрать средство выделения, которое очень быстро, но не делает никакого освобождения, использует размещение в ОЗУ и любого другого семантического, Вы хотите наложить путем выбора пула и передачи его как аргумента размещению объекта новый оператор.

13
задан Adam Robinson 10 August 2009 в 14:27
поделиться

3 ответа

Вы можете пойти двумя путями:

var count = (from u in context.Users where u.datJoined > date select u).Count();

или

var count = context.Users.Where( x => x.datJoined > date).Count();

Оба эквивалентны, это действительно зависит от личных предпочтений.

15
ответ дан 1 December 2019 в 23:48
поделиться

Я предполагаю, что у вас есть список IEnumberable с именем users и некоторая переменная с именем somedate.

int count = users
   .Where<User>(i => i.dateJoined > someDate)
   .Count<User>();

Это будет работать с любым списком IEnumberable, а не только с Linq to Sql

1
ответ дан 1 December 2019 в 23:48
поделиться
(from u in context.Users where u.dateJoined > date select u).Count()
1
ответ дан 1 December 2019 в 23:48
поделиться
Другие вопросы по тегам:

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