栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > .Net

.NET小结

.Net 更新时间:发布时间: 百科书网 趣学号

@Tomato

.NET小结

目录

文章目录
      • 1、Lamdba
        • 1.1、Any
        • 1.2、连表查询
        • 1.3、获取树结构

1、Lamdba

Lambda表达式实际上是一种匿名函数,在Lambda表达式中可以包含语句以及运算等操作。并且可用于创建委托或表达式目录树类型,支持带有可绑定到委托或表达式树的输入参数的内联表达式。使用Lambda表达式可大大减少代码量,使得代码更加的优美、简洁,更有可观性。

eg:

  1. list.RemoveWhere(r=>r.Year = 2000)
  2. list.RemoveAll(r=>r.Year = 2000);
  3. list.FirstOrDefault(r=>r.Year = 2000);
  4. list.Count(r=>r.Year = 2000);
  5. list.FindAll(r=>r.Year = 2000);
  6. list.GroupBy(r=>r.Year = 2000);
  7. list.Max(r=>r.Year = 2000);
  8. list.Average(r=>r.Year = 2000);
  9. list.Select(r=>r.Year = 2000);

1.1、Any

要求:查询是否存在名字为“张三”的学生。(你的代码会怎样写呢?)



第一种?第二种?第三种?让我们来对比一下这三个语句的性能。



1.2、连表查询

要求:查询所有一年级里面姓名为“张三”的学生。(班级 1对多>> 学生)

// 1.查询一年级班级,然后循环查出里面姓名为张三的学生
var claList=this.classService.List(new cla(){age=1});
foreach(var item in claList)
{
	selList=this.stuService.List(new stu(){name='张三',stuID=item.stuID});
	.......
}

// 2.上面循环多次打开数据连接,吃数据库,占时间,接口反应慢
// 优化==>  先查出所有符合条件的班级和学生,然后通过内存去比对
var claList=this.classService.List(new cla(){age=1});
var stuList=this.stuService.List(new stu(){name='张三'});
foreach(var item in claList)
{
	selList=stuList.FindFirst(x=>x.claID==item.claID);
	.......
}

// 3.上面操作过于繁琐,且数据量大的情况下依旧不太客观
// 直接编写SQL   
QueryStu(){
   stringbu.....="sel stu inner join  cla ....";
   if (start.age!= end.Year)
       if (!string.IsNullOrWhiteSpace(this.name))
       {
           sb.Append(" AND name like @name");
           paramList.Add(new SqlParameter("@name", "%" + this.name+ "%"));
       }
}


// 4.拼接sql繁琐,易出错,且容错率低,可维护性较差
// 查询新建学生内联视图,新建ViewModel,映射视图字段查询
sql:  create view ....

var selList=this.stuService.ListView(new stuView(){name='张三',claAge=1});

1.3、获取树结构
private static List FormatGroupTree(List selModelViewList)
{
    if (selModelViewList == null || selModelViewList.Count == 0)
    { return null; }
    List> groupListData = selModelViewList.Select((x, i) => new { Index = i, Value = x })
     .GroupBy(x => x.Value.ModelGroupName)
     .Select(x => x.Select(v => v.Value).ToList())
     .ToList();

    selModelViewList = new List();
    foreach (List item in groupListData)
    {
        ModelViewModel tempModel = new ModelViewModel();
        tempModel = item[0];
        tempModel.Child = DynamicTableHelper.CreateDeepCopy>(item).OrderByDescending(x => x.OrderNum).ToList();
        selModelViewList.Add(tempModel);
    }

    return selModelViewList;
}
转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/955494.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号