class Data { public int A { get; set; } public string Name { get; set; } public override string ToString() { return "A:"+A+",Name:"+Name; } } List<Data> datas = new List<Data>() { new Data() { A = 1,Name = "me"}, new Data(){ A = 10,Name = "hello"}, new Data(){ A = 5,Name = "world"} }; var newData = from m in datas orderby m.A descending select m; newData = datas.OrderBy(m => m.A); foreach (var data in newData) { Console.WriteLine(data); }
可以在orderby后面根据多个元素排序,用,间隔
descending表示倒序排列
第二句OrderBy是扩展方法
class Data { public int A { get; set; } public string Name { get; set; } public override string ToString() { return "A:"+A+",Name:"+Name; } } List<Data> datas = new List<Data>() { new Data() { A = 1,Name = "me"}, new Data(){ A = 10,Name = "hello"}, new Data(){ A = 5,Name = "world"} }; var newData = from m in datas from n in datas where m.A > 5 && n.A == 1 select new{dataA = m,dataB = n}; var newData2 = from m in datas join n in datas on m.A equals n.A select new{dataA = m,dataB = n}; foreach (var data in newData) { Console.WriteLine(data); }
使用两个from,where条件来限制联合的两条数据
这里都是同一个,所以没有联合条件
一般为m.ID == n.UId之类的
select new{dataA = m,dataB = n} 表示newData里面的元素变为例如:
data.dataA.A , data.dataB.Name
第二个联合使用了join in equals 关键字
class Data { public int A { get; set; } public string Name { get; set; } public override string ToString() { return "A:"+A+",Name:"+Name; } } List<Data> datas = new List<Data>() { new Data() { A = 1,Name = "me"}, new Data(){ A = 10,Name = "hello"}, new Data(){ A = 5,Name = "world"} }; var newData = datas.Where(m => m.A >= 5 && m.Name =="hello"); foreach (var data in newData) { Console.WriteLine(data); }
使用集合的Where方法传递一个Lambda表达式,过滤元素,m参数为每个元素代表,内容条件为true表示获取,false表示舍弃
class Data { public int A { get; set; } public string Name { get; set; } public override string ToString() { return "A:"+A+",Name:"+Name; } } List<Data> datas = new List<Data>() { new Data() { A = 1,Name = "me"}, new Data(){ A = 10,Name = "hello"}, new Data(){ A = 5,Name = "world"} }; var newData = from m in datas where m.A >= 5 select m; foreach (var data in newData) { Console.WriteLine(data); }
LINQ表达式:from m in datas where m.A >= 5 select m
在集合datas中选出元素m符合A属性大于等于5的
Action aa = null; aa += test1; aa += test2; aa -= test1; if(aa != null) aa();
委托名 += 方法名 按循序执行
委托名 -= 方法名 删除委托引用的方法
多播委托不能有返回值,我测试了一下,有返回值的也是可以通过+来搞成多播委托的,只是返回的只有最后一个方法的返回值。
string spistr = "i,love.you!memeda"; string[] strArr = Regex.Split(spistr, "[,.!]"); foreach (string s in strArr) { Console.WriteLine(s); }
Split()方法表示切割字符串,以,或,或!区分的
string sttr = "123addyou恩啊1a"; MatchCollection coll = Regex.Matches(sttr, @"[a-z]|\d"); foreach (Match m in coll) { Console.WriteLine(m.ToString()); }
Matches()方法匹配符合子字符串集合
这里匹配单个数字或者是a-z的字母
string input = Console.ReadLine(); bool isMatch = Regex.IsMatch(input, @"^\d*$"); Console.WriteLine(isMatch);
\d 表示数字
*表示0个,一个,多个
IsMatch方法,表示是否匹配
using System.Text.RegularExpressions; string regex = "I am a boy"; string newstr = Regex.Replace(regex, "^", "开始:"); Console.WriteLine(newstr);
^匹配开头,直接替换开头为“开始:”
扩展 $ 表示匹配结尾
Replace方法,为替换方法
Append("str");//在当前字符串后面追加str Insert(index,"str");//在index位置前面插入str Remove(startIndex,length);//移除指定位置后面指定长度的子字符串 Replace(cs1,cs2);//替换某个字符或字符串cs1为cs2 ToString();//转换为一个不可变长的字符串string