C#Linq语法二

来源:互联网 发布:spss剔除异常数据 编辑:程序博客网 时间:2024/05/22 06:06

1、

 //IsDigit():指定的字符是否在十进制数字            string datatSource = "Visual Studio 2010 team";            var values = from u in datatSource                         where char.IsDigit(u)                         select u;            foreach (var item in values)            {                Response.Write(item.ToString() + "<br />");            }            Response.Write("<br />");            //匿名函数====================            List<WebProject.classFiles.Students> list = new List<classFiles.Students>            {                new Students{ID=1,Name="jack"},                 new Students{ID=2,Name="bokk"}            };            var value = from d in list                        select new { d.ID, d.Name };            foreach (var item in value)            {                Response.Write(item.ID + "   " + item.Name + "   ");            }            Response.Write("<br />");            foreach (var item in value)            {                Response.Write(string.Format("用户ID:{0},用户姓名:{1}", item.ID, item.Name));            }            Response.Write("<br />");            //=============================            string sql = "select TOP 10  ID,ProjectName,ContractNumber  from  LbtProjectInfo";            DataSet ds = LearningComon.SqlHelp.ExecuteDataset(LearningComon.SqlHelp.constr, sql, CommandType.Text, null);            var querys = from infos in ds.Tables[0].AsEnumerable()                         select infos;            foreach (var item in querys)            {                Response.Write("工程名称:" + item.Field<string>("ProjectName") + "   项目编号:" + item.Field<string>("ContractNumber"));                Response.Write("<br />");            }            Response.Write("<br />");            //IEnumerable对象==Field<T>()方法===========            IEnumerable<DataRow> queryss = from infos in ds.Tables[0].AsEnumerable()                                           select infos;            DataTable dt = queryss.CopyToDataTable<DataRow>();            var querysss = from infos in ds.Tables[0].AsEnumerable()                           where infos.Field<int>("ID") < 530                           select new                           {                               PN = infos["ProjectName"].ToString(),                               CN = infos["ContractNumber"].ToString()                           };            foreach (var item in querysss)            {                Response.Write("PN " + item.PN + ",    CN " + item.CN);            }            Response.Write("<br />");            //Field<T>====================            //SetField<T>            var queryst = from infos in ds.Tables[0].AsEnumerable()                           where infos.Field<int>("ID") < 520                           select infos;            foreach (var item in queryst)            {                item.SetField<string>("ContractNumber", "ZK11111");                                     }            DataTable dt2 = queryst.CopyToDataTable<DataRow>();            GridView1.DataSource = dt2;            GridView1.DataBind();            Response.Write("<br />");

1、Linq to  Sql语法:

http://www.cnblogs.com/yukaizhao/archive/2010/05/19/linq_to_sql_grouping_having.html

2、

http://www.cnblogs.com/libingql/

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

3、

C#

//用linq to sql写一个最简单的group分组语句:              string WatchSqlPath = @"D:\1.txt";//在D盘新建一个1.txt,什么内容都不写              using (var writer = new StreamWriter(WatchSqlPath, false, Encoding.UTF8))              {                  using (DataClasses1DataContext db = new DataClasses1DataContext())                  {                      db.Log = writer;                        var querys = from s in db.LbtProjectInfo                                   group s by s.TestType                                       into sg                                       select new                                       {                                           Keyid = sg.Key,                                           counts = sg.Count()                                       };                      foreach (var item in querys)                      {                          Response.Write(string.Format("ID={0} 总数= {1} <br />", item.Keyid, item.counts));                      }                  }              }  
执行后1.txt里面的内容:

SELECT COUNT(*) AS [counts], [t0].[TestType] AS [Keyid]  FROM [dbo].[LbtProjectInfo] AS [t0]  GROUP BY [t0].[TestType]  -- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.7.2053.0  

4、、

LINQ to SQL 系列五 grouping having

//用linq to sql写一个最简单的group分组语句:             string WatchSqlPath = @"D:\1.txt";//在D盘新建一个1.txt,什么内容都不写             using (var writer = new StreamWriter(WatchSqlPath, false, Encoding.UTF8))             {                 using (DataClasses1DataContext db = new DataClasses1DataContext())                 {                     db.Log = writer;                       var querys = from s in db.LbtProjectInfo                                                                    group s by new                                  {                                      s.TestType,                                      s.Status                                  }                                      into sg                                      let cn = sg.Count<LbtProjectInfo>()                                      orderby cn descending                                      select new                                      {                                          Keyid = sg.Key.TestType,                                          status = sg.Key.Status,                                          counts = cn                                      };                     foreach (var item in querys)                     {                         Response.Write(string.Format("检测类型={0}  状态={1} 总数= {2}条   <br />", item.Keyid, item.status ,item.counts));                     }                 }             }  
执行后1.txt里面的内容:
SELECT [t1].[TestType] AS [Keyid], [t1].[Status] AS [status], [t1].[value] AS [counts]  FROM (      SELECT COUNT(*) AS [value], [t0].[TestType], [t0].[Status]      FROM [dbo].[LbtProjectInfo] AS [t0]      GROUP BY [t0].[TestType], [t0].[Status]      ) AS [t1]  ORDER BY [t1].[value] DESC  -- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.7.2053.0  
显示效果:


相关文档:

http://www.cnblogs.com/yukaizhao/archive/2010/05/19/linq_to_sql_grouping_having.html


调用:

IEnumerable<T>类型直接转换成DataTable

IEnumerable<LbtProjectInfo> lbt= from n in dbc.LbtProjectInfo
                                                          select n;

  DataTable dt = IEnumerableExtensions.AsDataTable<LbtProjectInfo>(lbt);

public static class IEnumerableExtensions  {      public static DataTable AsDataTable<T>(this IEnumerable<T> data)      {          PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));          var table = new DataTable();          foreach (PropertyDescriptor prop in properties)              table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);          foreach (T item in data)          {              DataRow row = table.NewRow();              foreach (PropertyDescriptor prop in properties)                  row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;              table.Rows.Add(row);          }          return table;      }  }  


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

http://www.cnblogs.com/liqingwen/p/5801249.html