简单的Linq笔记

最近带一个新人,被问到Linq的一点东西,回答他后,自己记录下,防止自己懵逼。

Linq中查询一个表中指定的几个字段:

var ts = t.FindAllItems().Where(P => P.ProductId== outProductId).Select(s => new { ProductName= s.DescProductName,Supplier=s.ProductSupplier}).Distinct().ToList().OrderByDescending(s => s.ivrId).Take(15);

// FindAllItems()为查询对应表的所有数据的方法;

// Where 里面为查询条件

// Select 为查询的筛选条件  new{}  里面就是要查询的字段

//Distinct() 为去除重复的查询

//ToList() 为将查询转换为List<>

//OrderByDescending()  表示排序字段及排序方法(倒序排列)

//Take(N)  表示查询前N条数据;

附加两个.net程序员写代码的和Linq相关两个误区:

1、使用迭代式 (而不是声明式)的语句去操作集合

//Bad
decimal total = 0;
foreach (Account account in myAccounts)
{
 if (account.Status == "active")
    {
      total += account.Balance;
    }
}

//Good
decimal total = (from account in myAccounts
               where account.Status == "active"
                select account.Balance).Sum();

一个单一的LINQ语句可以轻易地替换掉你代码中一个迭代循环(或嵌套循环)里的几十条语句。更少的代码通常意味着产生Bug的机会也会更少地被引入。

然而,记住,在性能方面可能要权衡一下。在性能很关键的场景需要权衡使用。

2、在LINQ语句之中没有考虑底层对象

decimal total=(from accout in myaccouts
where accout.status=="active"
      select accout .Balance).sum();

如果myaccout是Dbset的对象。(默认设置了不同区分大小写的配置),where表达式仍会匹配该元素。然而,如果myaccout是在内存阵列之中,那么它将不匹配,因此将产生不同的总的结果。

时间: 2024-08-23 17:09:17

简单的Linq笔记的相关文章

Android简单的分享笔记

http://blog.csdn.net/xyz_lmn/article/details/16856843 采用Intent隐式调用Activity的方法,主要使用Intent.ACTION_SEND和Intent.createChooser(); 调用Android系统的分享接口.系统会过滤手机上的具有分享应用的程序,让用户进行选择.如果没有使用Intent.createChooser()则会取系统默认的用户分享方式,只有未设置的情况下才会弹出让用户进行选择. 1.简单的分享文本 1 Inte

nohup 和&结合jobs简单使用操作笔记!

[[email protected] ~]# nohup ./ren.sh &   -&代表后台运行 [1] 56833 [[email protected] ~]# nohup: 忽略输入并把输出追加到"nohup.out"  --enter后输入jobs查看后台程序 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [[email protected] ~]# jobs   -jobs查看

简单的linq语法

1.简单的linq语法 //1 var ss = from r in db.Am_recProScheme select r; //2 var ss1 = db.Am_recProScheme; //3 string sssql = "select * from Am_recProScheme"; 2.带where的查询 //1 var ss = from r in db.Am_recProScheme where r.rpId > 10 select r; //2 var ss

简单Linq笔记

Linq是.net 3.5才引入的 要引入命名空间System.Linq. Linq  to XML要引入System.Xml.Linq Linq to ADO.NET要引入System.Data.Linq 每个Linq查询都是以from子句开始,Linq查询中,select子句和select子句都是必备子句.Linq查询表达式 必须以select或group子句结束 from字句包括两个基本功能 --1>指定查询将采集的数据源 --2>定义一个本地变量,表示数据源中的单个元素 1,最简单的查

简单测试linq to sql性能

前些日子,做了一个物业收费系统,cs模式,用到了linq to sql 技术,这是我第一次使用这个东东写程序存取数据库,迷迷糊糊搞得一塌糊涂,当时有个同学他们找好的分页组件,然后写好了调用方法,由于时间比较急,而且第一次用,所以没有怎么研究就直接按照注释使用他们写好的分页方法,然而开发过程中一直都对他们写的方法有怀疑,会不会是一种投机取巧,胡编乱造的?后来我也做过一些简单分析,我发现程序在业务逻辑层中每次都从数据库中将数据全部读取出来,然后循环将数据转成特定的List,也就是遍历整个数据集合,然

一个简单的Linq to TreeNode

最近两天写单元测试,碰到需要验证一个树是否是期望的,但是树这个结构要验证起来还真是有点烦... 我的树大概是这样的: 1 class TreeNode<T> 2 { 3 private static readonly TreeNode<T>[] Empty = new TreeNode<T>[0]; 4 public TreeNode() : this(default(T), Empty) { } 5 public TreeNode(T value, IReadOnly

一个简单的LINQ|程序

在关系型数据库中,数据表被组织放入规范化很好的表中,并且通过简单而强大的语言SQL来进行访问,SQL可以和 数据库中的任何数据配合使用,因为数据被放入表中,并且遵从一些严格的规定: 然而程序却与数据库相反,保存在类对象或者结构中的数据差异很大.因此没有通用的查询语言来从数据结构中 获取数据.从对象中获取的方法一直都是作为程序的一部分设计的,然而使用LINQ可以轻松的查询对象集合. LINQ=language integrated query namespace ConsoleApplicatio

简单脱壳教程笔记(9) --- 手脱TELock0.98b1壳

本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记.本笔记用到的工具下载地址: http://download.csdn.net/detail/obuyiseng/9466056 TELock 操作 1.最后一次异常法 1.选项--->调试设置--->异常------取消所有异常. 在OD插件--StrongOD--Options--Skip Some Exceptions选项取消,重启OD再试试. 2.然后将程序重新载入 3.按shift+f9 ,发现17次shift+f9 就会让程序

简单脱壳教程笔记(10) --- 手脱EXE32PACK壳

本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记.本笔记用到的工具下载地址: http://download.csdn.net/detail/obuyiseng/9466056 EXE32PACK 1.ESP定律 1.将程序加载到OD中,发现有大段的加密指令,我们先单步走,到达关键指令,push ebp 2.单步运行到cmp eax,eax处,在寄存器窗口的esp处,右键在数据窗口跟随,并在数据窗口中进行设置硬件断点. 3.按运行,并删除硬件断点 4.然后单步,就会到达OEP 2.下断: