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