ArrayList vs List <> в C #

Ваш текущий запрос близок, но я бы предложил несколько незначительных изменений, чтобы получить результат. Если вы хотите «сворачивать» данные с помощью JOINs, вам нужно будет различать, какое значение вы хотите вернуть из TableB в каждом последующем соединении.

Например, если вы хотите вернуть type=rev, вам нужно указать конкретный фильтр для этого значения. Затем вы сделаете то же самое с type=revision. Я также предлагаю использовать LEFT JOIN для присоединения к TableB, если у вас нет обоих значений type для каждого Acc_no, после чего вы все равно вернете данные.

select
  a.data,
  a.acc_no,
  b.type,
  b.amount,
  bb.type as type_1,
  bb.amount as amount_1
from tablea a
left join tableb b
  on a.acc_no = b.obj
  and b.type = 'rev'
left join tableb bb
  on a.acc_no = bb.obj
  and bb.type = 'revision';

См. SQL Fiddle with Demo

Вы также можете получить этот результат с помощью некоторой условной агрегации, тогда вам не обязательно присоединяться к TableB несколько раз:

select
  a.data,
  a.acc_no,
  max(case when b.type = 'rev' then b.type end) as type,
  max(case when b.type = 'rev' then b.Amount end) as Amount,
  max(case when b.type = 'revision' then b.type end) as type_1,
  max(case when b.type = 'revision' then b.Amount end) as Amount_1
from tablea a
left join tableb b
  on a.acc_no = b.obj
group by a.data, a.acc_no
order by a.acc_no;

См. SQL Fiddle with Demo

375
задан Tamir Vered 18 December 2016 в 22:07
поделиться

2 ответа

функция ($) {...} определяет анонимную функцию с формальным параметром $ . $ .fn относится к свойству fn объекта, на который ссылается переменная $ .

-121--3823341-

Как создать изолированную среду для разрешений? Я пытался добавить папку через настройки, но это не сработало.

http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html#117502

Я сделал простой, как новый проект. Это полный код.

var mc:MovieClip = new MovieClip ();

var loader:Loader = new Loader ();
loader.contentLoaderInfo.addEventListener (Event.COMPLETE, OnComplete);

var request:URLRequest = new URLRequest ("B.swf"); 

var variables : URLVariables = new URLVariables(); 
variables.xml = "test2.xml"; 

// This line causes the error 2044, if i comment out, it runs fine without FlashVars   
request.data = variables; 

loader.load (request);  


function OnComplete (e:Event)
{
    trace ("On Complete");
    mc = e.currentTarget.content as MovieClip;
    addChild (mc);
}
-121--3832354-

Да, в значительной степени. Список < T > является универсальным классом. Он поддерживает хранение значений определенного типа без заливки в объект или из объекта (что привело бы к накладным расходам на упаковку/распаковку, если T является типом значения в случае ArrayList ). ArrayList просто хранит ссылки на объект . В качестве общего набора List < T > реализует универсальный интерфейс IEnumerable < T > и может быть легко использован в LINQ (без вызова Cast или OfType ).

ArrayList относится к дням отсутствия дженериков на C #. Он устарел в пользу списка < T > . Нельзя использовать ArrayList в новом коде, предназначенном для .NET > = 2,0, если не требуется интерфейс со старым API, использующим его.

508
ответ дан 22 November 2019 в 23:53
поделиться

Как упомянуто в Платформе.NET документация

Мы не рекомендуем использовать ArrayList класс для новой разработки. Вместо этого мы рекомендуем использовать дженерик List<T> класс. ArrayList класс разработан для содержания неоднородных наборов объектов. Однако это не всегда предлагает лучшую производительность. Вместо этого мы рекомендуем следующее:

  • Для неоднородного набора объектов, используйте List<Object> (в C#) или List(Of Object) (в Visual Basic) тип.
  • Для гомогенного набора объектов, используйте List<T> класс.

Видят также , Неуниверсальные наборы не должны использоваться

table shows how the non-generic collection types can be replaced by their generic counterparts

0
ответ дан 22 November 2019 в 23:53
поделиться
Другие вопросы по тегам:

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