C#Linq语法二

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值