Linq的参考资料:https://www.cnblogs.com/liqingwen/p/5801249.html

1.判断str字符串中的逗号个数

string str = "1,2,3,4,5,6";
int count = str.Count(ch => ch == ',');

2.使用 where 子句来从数组中筛选那些具有特定长度的字符串

string[] words = { "the", "quick", "brown", "fox", "jumps" };

var query = from word in words
where word.Length ==
select word; foreach (var word in query)
{
Console.WriteLine(word);
}

3.查询一个List<Dictionary<string, object>>里面的一个值v是否在其里面的字典的值中

        static void Main(string[] args)
{
List<Dictionary<string, object>> listDic = new List<Dictionary<string, object>>(); Dictionary<string, object> dic = new Dictionary<string, object>();
dic.Add("", "a");
dic.Add("", "b"); Dictionary<string, object> dic2 = new Dictionary<string, object>();
dic2.Add("", "b"); listDic.Add(dic);
listDic.Add(dic2); //ToDictionary 转换成字典
var q = listDic.SelectMany(x => x.Where(y => y.Value == "b")).ToDictionary(a =>a.Key, a =>a.Value); foreach (var item in q)
{
Console.WriteLine(item.Key + "---" + item.Value);
} Console.ReadLine();
}

如果需要输出其对应字典在List中的下标,则

        static void Main(string[] args)
{
List<Dictionary<string, object>> listDic = new List<Dictionary<string, object>>();
Dictionary<string, object> dic = new Dictionary<string, object>();
dic.Add("", "a");
dic.Add("", "b"); Dictionary<string, object> dic2 = new Dictionary<string, object>();
dic2.Add("", "b"); listDic.Add(dic);
listDic.Add(dic2); //要下标的话,那就只能产生新对象了。
var q = listDic.Select((x, i) => new
{
index = i,
dict = x.Where(y => y.Value.ToString() == "b")
}); foreach (var item in q)
{
Console.WriteLine("index:{0}", item.index);
foreach (var v in item.dict)
{
Console.WriteLine(v.Key + "---" + v.Value);
}
} Console.ReadLine();
}

4.字典合并

第一种

chanceAllDic = chanceSmallDic.Concat(chanceBigDic).ToDictionary(k => k.Key, v => v.Value);

第二种

buildDic = BattleJsonData.chanceSmallDic.Union(BattleJsonData.chanceBigDic).ToDictionary(k => k.Key, v => v.Value);

5.类型转换

    public static List<Dictionary<string, object>> ListDicSort(List<object> listDic, string rank)
{
List<Dictionary<string, object>> myListDic = new List<Dictionary<string, object>>();
//普通写法
//for (int i = 0; i < listDic.Count; i++)
//{
// Dictionary<string, object> o = (Dictionary<string, object>)listDic[i];
// myListDic.Add(o);
//}
//Linq写法
myListDic = (from x in listDic select (Dictionary < string,object>)x).ToList(); return myListDic.OrderByDescending(a => a[rank]).ToList();
}

6.自动分组

            //============================模拟数据==================================//
Dictionary<string, Dictionary<string, object>> dic_dic = new Dictionary<string, Dictionary<string, object>>();
Dictionary<string, object> dic = new Dictionary<string, object>();
dic.Add("name", "回复剂");
dic.Add("type", "药");
dic_dic.Add("", dic);
Dictionary<string, object> dic2 = new Dictionary<string, object>();
dic2.Add("name", "以太");
dic2.Add("type", "药");
dic_dic.Add("", dic2);
Dictionary<string, object> dic3 = new Dictionary<string, object>();
dic3.Add("name", "斧子");
dic3.Add("type", "武器");
dic_dic.Add("", dic3);
Dictionary<string, object> dic4 = new Dictionary<string, object>();
dic4.Add("name", "斧子");
dic4.Add("type", "药");
dic_dic.Add("", dic4);
//===================================================================// //按照type类型进行分类并且生成出字典嵌套字典
Dictionary<string, List<Dictionary<string, object>>> allDic = dic_dic.GroupBy(x => x.Value["type"])
.Select(g => new { key = g.Key, value = g.Select(s => s.Value) })
.ToDictionary(v => v.key.ToString(), v => v.value.ToList());

c#高级写法的更多相关文章

  1. css自适应宽度高级写法:一行多列~~~某些列的宽度是固定值

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAxgAAACdCAIAAAC4iknFAAAgAElEQVR4nO2d3VsTV7uH51/wqhKotn

  2. Cocos2dx-Android 之Makefile通用高级写法

    不废话,直接贴.节约时间.须要改进的地方请各位指出.共同学习. LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := c ...

  3. 2017.10.13 Java中引用类型变量的创建及使用&循环高级写法

    今日内容介绍 1.引用类型变量的创建及使用 2.流程控制语句之选择语句 3.流程控制语句之循环语句 4.循环高级 ###01创建引用类型变量公式     * A: 创建引用类型变量公式         ...

  4. nginx 二级目录高级写法

    nginx二级目录高级配置: location ~ .*\.(html)$ { expires 1m; error_page 404 = /test/index.html; access_log /d ...

  5. vue指令实现拖动的高级写法

    不熟悉vue自定义指令看这里: https://cn.vuejs.org/v2/guide/custom-directive.html vue指令实现拖动方法很方便也挺简单,但是网上大部分的教程代码, ...

  6. js高级写法

    名称 一般写法 优化 取整(不四舍五入) parseInt(a,10); //Before Math.floor(a); //Before a>>0; //Before ~~a; //Af ...

  7. Android.mk高级写法

    转:http://blog.csdn.net/langresser_king/article/details/8275291 原本只是想记录一些常用的使用技巧,但是越写越得意(>_<),忍 ...

  8. .net 高级写法总结

    1.处理HTTP非正常的请求参数: [1] 获取相应的流转为string [2] request 的只读属性设置为可编辑,类似form [3] 转换为json对象 [4] 重设只读属性 //判断请求类 ...

  9. mysql sql语句高级写法

    将user表的内容,插入到team_member表INSERT INTO team_member (Nike,HeadImageUrl) SELECT Nike,HeadImageUrl FROM u ...

随机推荐

  1. 【单例模式】Singleton pattern

    前言:有很多时候,在一个生命周期中我们只要一个对象就可以了,比如:线程池,缓存,对话框,日志,显卡驱动等等.如果造出多个实例,就会导致许多问题产生,例如:程序的行为异常.资源使用过量,或者说不一致的结 ...

  2. HTML <area> 标签区域map标签

    1.距形:(左上角顶点坐标为(x1,y1),右下角顶点坐标为(x2,y2)) <area shape="rect" coords="x1,y1,x2,y2" ...

  3. nginx理解与配置

    准备: http服务器:①tomcat②apache③nginx(c语言开发) 文件系统:①mgfs ②mgbd:存储小文件 ③fastDFS:存储大文件.小文件,分布式文件系统 nginx是一种ht ...

  4. git you need to resolve your current index first 解决办法

    当使用git checkout 切换分支时会提示you need to resolve your current index first,使用如下命令即可解决. $ git reset --merge

  5. 【FAQ】服务下线

    原因:磁盘已满

  6. c语言数据结构学习心得——图

    图G由顶点集V和边集E组成,记为G=(V,E) 图不可为空,一定有顶点集不为空 有向图:有向边(弧)的有限集合 无向图:无向边的有限集合 连通:顶点V到顶点V'有路径 连通分量:无向图中的极大连通子图 ...

  7. Eclipse 使用TFS

    Install Soft , –> add http://dl.microsoft.com/eclipse/tfs   form:http://msdn.microsoft.com/en-us/ ...

  8. mysql sql知识总结

    SQL知识总结: 检索不同的行: SELECT DISTINCT VEND_ID FROM PRODUCTS; DISTINCT 应用于所有的列 =================== 限制结果: S ...

  9. day--39-MySQL的多表查询

    多表查询一:表的基本介绍 可以参考:https://www.cnblogs.com/cdf-opensource-007/p/6517627.html 建立一个员工表信息表和一个部门表,每个员工都对应 ...

  10. Nginx负载均衡详解

     upstream mysvr {  server 192.168.10.121:3333; server 192.168.10.122:3333; } server { .... location ...