in

SDT Community Server

SDT Forums, Blogs, Photos server.

wego

May 2008 - Posts

  • Dot Net 2.0 使用3.5的 Linq

     注意事项:

    1) 前提是开发者机器要装有Framework 3.5, 引入Reference : System.Core

    2)  若发布服务器没装 Framework 3.5, 需手工把 System.Core.dll 加入到 bin 下再发布

    =========================================== 

    using System.Linq;

    ..

    string[] list = new string[] { "mary", "tom", "david", "cathy", "tom" };    // 除数组外,  其它集合类也可 (如: List, Hashtable , Dictionary)
    IEnumerable<string> result;

    //
    Console.WriteLine("--- 'FirstOrDefault' --");
    result = Enumerable.Where<string>(list,
                     delegate(string item)
                     {
                         return item == "tom";
                     });
    Console.WriteLine(Enumerable.FirstOrDefault(result));

    //
    Console.WriteLine("--- 'OrderBy' --");
    result = Enumerable.OrderBy<string, string>(list,
                    delegate(string item)
                    {
                        return item;
                    });
    foreach (string str in result)
    {
        Console.WriteLine(str);
    }

    //
    Console.WriteLine("--- 'Min' --");
    string result_str = Enumerable.Min<string, string>(list,
                     delegate(string item)
                     {
                         return item;
                     });
    Console.WriteLine(result_str);

    //
    Console.WriteLine("--- 'Distinct' --");
    result = Enumerable.Distinct<string>(list);
    foreach (string str in result)
    {
        Console.WriteLine(str);
    }

    //
    Console.WriteLine("--- 'All' --");
    bool result_bool = Enumerable.All<string>(list, delegate(string item)
                     {
                         return item.CompareTo("d") > 0;
                     });
    Console.WriteLine(result_bool);

    //
    Console.WriteLine("--- 'Distinct' & 'OrderBy' & 'Where' --");
    result = Enumerable.Distinct<string>(Enumerable.OrderBy<string, string>(Enumerable.Where<string>(list,
                    delegate(string item)
                    {
                        return item == "tom" || item == "david";
                    }),
                    delegate(string item)
                    {
                        return item;
                    }));
    foreach (string str in result)
    {
        Console.WriteLine(str);
    }

    ===========================================

    输出如下: 

    --- 'FirstOrDefault' --
    tom
    --- 'OrderBy' --
    cathy
    david
    mary
    tom
    tom
    --- 'Min' --
    cathy
    --- 'Distinct' --
    mary
    tom
    david
    cathy
    --- 'All' --
    False
    --- 'Distinct' & 'OrderBy' & 'Where' --
    david
    tom
     

     

    Posted May 14 2008, 01:38 PM by wego with no comments
    Filed under: ,
  • Oracle 泛型使用

    ------------------------------------------------------------------------------------------------------------- 

    --  procedure part

    FUNCTION IIF (p_bool IN BOOLEAN, p_result1 IN ANYDATA, p_result2 IN ANYDATA)
       RETURN ANYDATA
    IS
       atype                ANYTYPE;
       data_type_argument   EXCEPTION;
    BEGIN
       IF p_result1.gettype (atype) <> p_result2.gettype (atype)
       THEN
          RAISE data_type_argument;
       END IF;

       CASE p_result1.gettype (atype)
          WHEN DBMS_TYPES.typecode_number
          THEN
             RETURN CASE
                WHEN p_bool
                   THEN ANYDATA.convertnumber (p_result1.accessnumber)
                ELSE ANYDATA.convertnumber (p_result2.accessnumber)
             END;
          WHEN DBMS_TYPES.typecode_varchar2
          THEN
             RETURN CASE
                WHEN p_bool
                   THEN ANYDATA.convertnvarchar2 (p_result1.accessvarchar2)
                ELSE ANYDATA.convertnvarchar2 (p_result2.accessvarchar2)
             END;
          WHEN DBMS_TYPES.typecode_date
          THEN
             RETURN CASE
                WHEN p_bool
                   THEN ANYDATA.convertdate (p_result1.accessdate)
                ELSE ANYDATA.convertdate (p_result2.accessdate)
             END;
       END CASE;
    EXCEPTION
       WHEN data_type_argument
       THEN
          DBMS_OUTPUT.put_line
              ('The data type of the ''IIF'' function both result parameter is different');
          RETURN NULL;
    END;

     

    -------------------------------------------------------------------------------------------------------------

    --  caller part 

    v_str                   VARCHAR2 (50)
             := iif (1 > 2,
                     ANYDATA.convertvarchar2 ('Yes'),
                     ANYDATA.convertvarchar2 ('No')
                    ).accessnvarchar2;         

    -- 类似于 C# 使用 string v_str = iif<string> (1> 2, 'Yes', 'No');


    v_num                NUMBER
             := iif (1 > 2, ANYDATA.convertnumber (1), ANYDATA.convertnumber (0)).accessnumber;   

    -- 类似于 C# 使用 int v_num = iif<int> (1> 2, 1, 0);

     

    DBMS_OUTPUT.put_line (v_str);       -- output 'No' 

    DBMS_OUTPUT.put_line (v_num);     -- output '0'

                                                                                      

     

     

    Posted May 07 2008, 11:48 AM by wego with no comments
    Filed under:
Copyright SDT, 2006-2009. All rights reserved.