zoukankan      html  css  js  c++  java
  • C#3.0 LINQ 操作符

    Table 类:

    public class DemoDataContext : DataContext
    {
      public DemoDataContext (string cxString) : base (cxString) {}
    
      public Table<Customer> Customers { get { return GetTable<Customer>(); } }
      public Table<Purchase> Purchases { get { return GetTable<Purchase>(); } }
    }
    
    [Table] public class Customer
    {
      [Column(IsPrimaryKey=true)]  public int ID;
      [Column]                     public string Name;
    
      [Association (OtherKey="CustomerID")]
      public EntitySet<Purchase> Purchases = new EntitySet<Purchase>();
    }
    
    [Table] public class Purchase
    {
        [Column(IsPrimaryKey=true)]  public int ID;
        [Column]                     public int CustomerID;
        [Column]                     public string Description;
        [Column]                     public decimal Price;
        [Column]                     public DateTime Date;
    
      EntityRef<Customer> custRef;
    
      [Association (Storage="custRef",ThisKey="CustomerID",IsForeignKey=true)]
      public Customer Customer
      {
        get { return custRef.Entity; } set { custRef.Entity = value; }
      }
    }

    使用SQL来创建表:

    create table Customer
    (
      ID int not null primary key,
      Name varchar(30) not null
    )
    create table Purchase
    (
      ID int not null primary key,
      CustomerID int not null references Customer (ID),
      Description varchar(30) not null,
      Price decimal not null
    )

    Join和GroupJoin实现:

    public static IEnumerable <TResult> Join
                                        <TOuter,TInner,TKey,TResult> (
      this IEnumerable <TOuter>     outer,
      IEnumerable <TInner>          inner,
      Func <TOuter,TKey>            outerKeySelector,
      Func <TInner,TKey>            innerKeySelector,
      Func <TOuter,TInner,TResult>  resultSelector)
    {
      ILookup <TKey, TInner> lookup = inner.ToLookup (innerKeySelector);
      return
        from outerItem in outer
        from innerItem in lookup [outerKeySelector (outerItem)]
        select resultSelector (outerItem, innerItem);
    }
    
    public static IEnumerable <TResult> GroupJoin
                                        <TOuter,TInner,TKey,TResult> (
      this IEnumerable <TOuter>     outer,
      IEnumerable <TInner>          inner,
      Func <TOuter,TKey>            outerKeySelector,
      Func <TInner,TKey>            innerKeySelector,
      Func <TOuter,IEnumerable<TInner>,TResult>  resultSelector)
    {
      ILookup <TKey, TInner> lookup = inner.ToLookup (innerKeySelector);
      return
        from outerItem in outer
        select resultSelector
         (outerItem, lookup [outerKeySelector (outerItem)]);
    }
  • 相关阅读:
    [WF4.0 实战] AutoResetEvent具体解释(线程独占訪问资源)
    linux下getrlimit与sysconf函数
    36.怎样使用定时任务
    1016. 部分A+B (15)
    找你妹+ipad+wifi,回顾那年的经典游戏
    Oracle 外键约束子表、父表
    字符串 上
    LeetCode103 BinaryTreeZigzagLevelOrderTraversal(二叉树Z形层次遍历) Java题解
    jquery ajax參数加点号状态200进error
    泛型数组随机排列工具类
  • 原文地址:https://www.cnblogs.com/yangzhenping/p/3346012.html
Copyright © 2011-2022 走看看