LINQ表达式用法整理

收集一些Linq表达式中的一些比较常用的写法,希望能给大家工作当中带来一些便利。

1. Where子句条件过滤结果集型(集合数据使用这种,譬如数组、列表数据,同样适用于Datatable等多列数据集)

类SQL语句的写法,对集合进行运算;

int[] factorsOf300 = { 2, 2, 3, 5, 5 };

var filters = from p in factorsOf300 where p<5 select p;

foreach (var filter in filters)

{

Console.WriteLine("Value: " + Convert.ToString(filter));

}

2. 对数据集进行函数运算型(特别注意select方法里面需要用new关键字来确定记录子集合)

string[] words = { "aPPLE", "BlUeBeRrY", "cHeRry" };

var upperLowerWords = from w in words

select new { Upper = w.ToUpper(), Lower = w.ToLower() };

foreach (var ul in upperLowerWords)

{

Console.WriteLine("Uppercase: {0}, Lowercase: {1}", ul.Upper, ul.Lower);

}

3. 多个数据子集进行复合计算:

int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };

int[] numbersB = { 1, 3, 5, 7, 8 };

var pairs = from a in numbersA

from b in numbersB

where a < b

select new { a, b };

Console.WriteLine("Pairs where a < b:");

foreach (var pair in pairs)

{

Console.WriteLine("{0} is less than {1}", pair.a, pair.b);

}

4. 子集运算,其中常见的算符有 Take, Skip, TakeWhile, SkipWhile.

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

var first3Numbers = numbers.Take(3);

Console.WriteLine("First 3 numbers:");

foreach (var n in first3Numbers)

{

Console.WriteLine(n);

}

5. 排序运算,

double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 };

var sortedDoubles = from d in doubles

orderby d descending select d;

Console.WriteLine("The doubles from highest to lowest:");

foreach (var d in sortedDoubles)

{

Console.WriteLine(d);

}

6. 分组运算

string[] words = { "blueberry", "chimpanzee", "abacus", "banana", "apple", "cheese" };

var wordGroups = from w in words

group w by w[0] into g

select new { FirstLetter = g.Key, Words = g };

foreach (var g in wordGroups)

{

Console.WriteLine("Words that start with the letter '{0}':", g.FirstLetter);

foreach (var w in g.Words)

{

Console.WriteLine(w);

}

}

7. 集合运算,算符包括Distinct, Union, Intersect, Except。

int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };

int[] numbersB = { 1, 3, 5, 7, 8 };

var uniqueNumbers = numbersA.Union(numbersB);

Console.WriteLine("Unique numbers from both arrays:");

foreach (var n in uniqueNumbers)

{

Console.WriteLine(n);

}

此集合输出为进行整合过后的一个数据集;

8. 转换操作,主要是包含 ToArray, ToList, ToDictionary, OfType这几个操作指令。

double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 };

var sortedDoubles = from d in doubles

orderby d descending

select d;

var doublesArray = sortedDoubles.ToArray();

Console.WriteLine("Every other double from highest to lowest:");

for (int d = 0; d < doublesArray.Length; d += 2)

{

Console.WriteLine(doublesArray[d]);

}

9. 元素操作:

-- First - Simple

-- First - Condition

-- FirstOrDefault - Simple

-- FirstOrDefault - Condition

-- ElementAt

string[] strings = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };

string startsWithO = strings.First(s => s[0] == 'o');

10. 子序列生成功能:

Range功能:

var numbers = from n in Enumerable.Range(100, 50)

select new { Number = n, OddEven = n % 2 == 1 ? "odd" : "even" };

foreach (var n in numbers)

{

Console.WriteLine("The number {0} is {1}.", n.Number, n.OddEven);

}

Repeat功能:

var numbers = Enumerable.Repeat(7, 10);

foreach (var n in numbers)

{

Console.WriteLine(n);

}

11.集合筛选判断功能:

-- Any - Simple

-- Any - Grouped

-- All - Simple

-- All - Grouped

- Any - Simple

string[] words = { "believe", "relief", "receipt", "field" };

bool iAfterE = words.Any(w => w.Contains("ei"));

-- Any - Grouped功能:

List products = GetProductList();

var productGroups =

from p in products

group p by p.Category into g

where g.Any(p => p.UnitsInStock == 0)

select new { Category = g.Key, Products = g };

12.数据集的聚合功能: Count, Sum, Min, Max, Average, Aggregate函数

int[] factorsOf300 = { 2, 2, 3, 5, 5 };

int uniqueFactors = factorsOf300.Distinct().Count();

13.集合叠加以及顺序比较功能: Concat,EqualAll函数

int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };

int[] numbersB = { 1, 3, 5, 7, 8 };

var allNumbers = numbersA.Concat(numbersB);

14.自定义函数功能:

int[] vectorA = { 0, 2, 4, 5, 6 };

int[] vectorB = { 1, 3, 5, 7, 8 };

int dotProduct = vectorA.Combine(vectorB, (a, b) => a * b).Sum();

Console.WriteLine("Dot product: {0}", dotProduct);

15. Query的使用:Deferred Execution、Immediate Execution、Query Reuse。

int[] numbers = new int[] { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

int i = 0;

var q = from n in numbers select ++n;

foreach (var v in q)

{

Console.WriteLine("v = {0}, i = {1}", v, ++i);

}

16. 集合连接运算: Cross Join、Group Join、Cross Join with Group Join、Left Outer Join。

string[] productsPrefix = new string[]{

"B",

"D",

"V",

"D",

"R"

};

string[] categories = new string[]{

"Beverages",

"Condiments",

"Vegetables",

"Dairy Products",

"Seafood" };

var q =

from p in productsPrefix

join c in categories on p equals c.Substring(0, 1)

select new { p, Category = c};

foreach (var v in q)

{

Console.WriteLine(v.p + ": " + v.Category);

}

欢迎关注我的公众号(同步更新文章):DoNet技术分享平台

阅读原文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Eclipse is running in a JRE, but a JDK is required 解决方法(转)

转自&#xff1a;http://comeonbabye.iteye.com/blog/1186239 安装Maven后每次启动出现警告信息: Eclipse is running in a JRE, but a JDK is requiredSome Maven plugins may not work when importing projects or updating source folders. 分两步解决问题: 1. 检查Eclipse正…

java线程归并排序_Java-归并排序 - FeanLau的个人空间 - OSCHINA - 中文开源技术交流社区...

public class MergeSort {static int number0;public static void main(String[] args) {int[] a {26, 5, 98, 108, 28, 99, 100, 56, 34, 1 };printArray("排序前&#xff1a;",a);MergeSort(a);printArray("排序后&#xff1a;",a);}private static voi…

收集一些优秀的DoNet开源项目

Paste_Image.pngJson.NEThttp://json.codeplex.com/ Json.Net是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单。通过Linq To JSON可以快速的读写Json&#xff0c;通过JsonSerializer可以序列化你的.Net对象。让你轻松实现.Net中所有类型(对象,基…

git初探

1 Linux下Git和GitHub环境的搭建 第一步&#xff1a; 安装Git&#xff0c;使用命令 “sudo apt-get install git” 第二步&#xff1a; 到GitHub上创建GitHub帐号 第三步&#xff1a; 生成ssh key&#xff0c;使用命令 “ssh-keygen -t rsa -C "your_emailyouremail.com&q…

java编程思想 初始化_《java编程思想》_第五章_初始化与清理

初始化和清理是涉及安全的两个问题&#xff0c;java中采用了构造器&#xff0c;并额外提供了“垃圾回收器”&#xff0c;对于不再使用的内存资源&#xff0c;垃圾回收器能自动将其释放。一、用构造器确保初始化java中&#xff0c;通过提供构造器&#xff0c;类的设计者可以确保…

OkHttp 上手

OkHttp 上手 优点 快、节省带宽。支持 HTTP&#xff0f;2 和 SPDY。HTTP&#xff0f;2 和 SPDY 允许对同一个主机的所有请求&#xff0c;使用一个 socket。如果不支持 SPDY 的话&#xff0c;可以用连接池减少请求等待时间。GZIP 缩小传输大小。缓存响应&#xff08;response ca…

关于Net开发中一些SQLServer性能优化的建议

一、 ExecuteNonQuery和ExecuteScalar 对数据的更新不需要返回结果集&#xff0c;建议使用ExecuteNonQuery。由于不返回结果集可省掉网络数据传输。它仅仅返回受影响的行数。如果只需更新数据用ExecuteNonQuery性能的开销比较小。 ExecuteScalar它只返回结果集中第一行的第一列…

jstl mysql_java – jsp jstl sql与mysql中的奇怪行为

在mysql中我有一个存储过程,其中包含一个sql&#xff1a;select firstname as i_firstname , lastname as i_lastname from roleuserwhere user_id uid ;我使用jstl代码来获取值&#xff1a; –call sp_select_username(?);${rows.i_firstname} ${rows.i_lastname}但是这个代…

C# 哈希表(Hashtable)用法笔记

一、什么是Hashtable&#xff1f;Hashtable 类代表了一系列基于键的哈希代码组织起来的键/值对。它使用键来访问集合中的元素。当您使用键访问元素时&#xff0c;则使用哈希表&#xff0c;而且您可以识别一个有用的键值。哈希表中的每一项都有一个键/值对。键用于访问集合中的项…

转: Div与table的区别

1&#xff1a;速度和加载方式方面的区别 div 和 table 的差异不是速度&#xff0c;而是加载方式&#xff0c;速度只能是指网络速度&#xff0c;如果速度足够快&#xff0c;是没有差异的&#xff1a; div 的加载方式是即读即加载&#xff0c;遇到 <div> 没有遇到 </div…

你的工作是为了你自己!

1、无论为谁打工&#xff0c;要为自己学东西&#xff0c;客观为公司创造价值。我自己当年&#xff0c;无论我在方正给国内企业工作&#xff0c;还是我在雅虎给外国人工作&#xff0c;我都跟别人最大的不一样&#xff0c;我从来不觉得我在给他们打工&#xff0c;我真的可能是很有…

java 无法注入service_SpringBoot集成shiro,MyRealm中无法@Autowired注入Service的问题

网上说了很多诸如是Spring加载顺序&#xff0c;shiroFilter在Spring自动装配bean之前的问题&#xff0c;其实也有可能忽略如下低级错误。在ShiroConfiguration中要使用Bean在ApplicationContext注入MyRealm&#xff0c;不能直接new对象。道理和Controller中调用Service一样&…

python之函数用法startswith()

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法startswith() #http://www.runoob.com/python/att-string-startswith.html#startswith() #说明&#xff1a;返回布尔值,用于检查字符串是否是以指定子字符串开头&#xff0c;如果是则返回 True&#xff0c;否则…

别去取悦,心里没你的人

鞋子不合适不必硬塞&#xff0c;否则磨了自己的脚&#xff1b;不必讨好心里没你的人&#xff0c;不在乎你的人&#xff0c;你付出再多&#xff0c;也打动不了他。讨好心里没你的人&#xff0c;会让自己很累很累&#xff1b;总是迁就他&#xff0c;总是围着他转&#xff0c;最后…

tensorflow java 加速_Tensorflow使用GPU加速

测试faster-rcnn时&#xff0c;cpu计算速度较慢&#xff0c;调整代码改为gpu加速运算将 with tf.Session() as sess: 替换为1 gpu_options tf.GPUOptions(per_process_gpu_memory_fraction0.9)2 with tf.Session(configtf.ConfigProto(gpu_optionsgpu_options,log_device_plac…

Install OpenStack Kilo Dashboard wiht Nginx + uWSGI On RHEL7.1

一、安装Horizon、Nginx、uWSGI yum install -y uwsgi-plugin-python openstack-dashboard uwsgi nginx 二、配置uWSGI cat >/etc/uwsgi.ini <<EOF [uwsgi] plugins python master true processes 10 threads 2 chmod-socket 666socket 127.0.0.1:9000 pidfile …

C#枚举类型的笔记

一、枚举类型的概念枚举类型声明为一组相关的符号常数定义了一个类型名称。枚举用于"多项选择"场合&#xff0c;就是程序运行时从编译时已经设定的固定数目的“选择”中做出决定。枚举类型&#xff08;也称为枚举&#xff09;为定义一组可以赋给变量的命名整数常量提…

java动态打印_JFreeChart学习(三)——动态打印java内存使用情况

JFreeChart动态打印java内存使用情况import java.awt.BasicStroke;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt…

WPF中StringToImage和BoolToImage简单用法

在WPF的绑定控件操作中&#xff0c;经常会通过bool值或者某些特定的string值做出相应动作。但UI层控件的很多属性对应的都不是Bool值或者对应的只是固定的String值。 这个时候有两方法解决该问题。 1.是在后台cs中做出比较判断&#xff0c;然后根据相应结果传达UI层做出相应动作…

【必备】jQuery性能优化的38个建议

一、注意定义jQuery变量的时候添加var关键字这个不仅仅是jQuery&#xff0c;所有javascript开发过程中&#xff0c;都需要注意&#xff0c;请一定不要定义成如下&#xff1a;$loading $(#loading); //这个是全局定义&#xff0c;不知道哪里位置倒霉引用了相同的变量名&#xf…