dynamics ax 2009 distinct实现及数组集合

1 通过分组实现distinct
   select ItemType,GoodsName from tableA order by ItemType,GoodsName group by ItemType,GoodsName
            where tableA.ItemType == '传入的值';
    采用上述SQL就可得到distict后的值,如果要取出数据后再进行distinct可以采用2中介绍的Set类;
2 数组集合
  注意:
     1 List、Map、Struct、Array提供了可序列化的pack和unpack功能,可以减少RPC次数,提高速度;
     2 如果设置了key的类型,存入不同类型如:string-->int,会自动存默认值(0)进去;
[Set 类]
Set类中所有值得类型都相同;Set会自动排序并且所有值都是唯一的,插入重复的值时,Set会自动忽略。
   set.Add("");
   while(set.MoveNext())
   {
      set.current();
   }
[List 类]
List类同Set类的区别:
 可添加相同值,可选择插入前面或者后面;
 在List的顺序是添加时的顺序,不会自动排序;
   list.Add("");
   while(list.MoveNext())
   {
      list.current();
   }
[Map 类]
Map类保存键值对,键不能重复,当插入相同键时,用新值代替旧值,键自动排序。
   map.insert(1,"");
   while(map.MoveNext())
   {
      map.currentKey(),map.currentValue();
   }
[Struct 类]
Struct 类相当于没有方法的类,可拥有不同数据类型字段,但只能有一行记录。
   struct.value("ID",1);
   struct.value("name","");
   struct.add("","");
   for(i = 1; i <= struct.fields();i++)
   {
      struct.fieldname(i),struct.valueIndex(i);
   }
[Array 类]
Array 类使用类实现数组,可容纳任意数据类型,包括对象和表变量;索引值从1开始,相同的索引值新值替换旧值。
   array.value(1,"");
   for(i = 1; i <= array.lastIndex();i ++)
   {
      array.value(i);
   }
[Stack 类]
Stack 类是后进先出(LIFO)的数据结构类型,只能放置容器类型Container,添加和删除都从顶部开始。
   stack.push(Container1);
   conpeek(stack.pop(),1);
[StackBase 类]
StackBase 类同Stack 类,除了它可以放置任意类型。
   stackbase.push("");
   stackbase.pop();

你可能感兴趣的:(distinct)