用了两周的时间做了一个很不完整的网站,有很多功能还来不及完成就结束了。也总算松了一口气了。
今天开始了asp.net框架技术这本书,书上第一章的内容不是很多,但是老师也不至于一下午就给我们讲三章的内容吧。
Asp.net框架技术
Linq to object 操作内存
Linq to xml 操作xml格式数据 操作硬盘
Linq to sql 操作数据库(被ef替代,但是ef支持linq to sql 写法)
*Linq to object 操作内存
1.Linq实现简单的查询
<span style="color:#3366FF;"> List<string> result = (from animial in list
where animial.Contains(needAnimal)
select animial).ToList();
Linq排序
List<string> result = (from animial in list
where animial.Contains(needAnimal)
orderby animial descending
select animial).ToList();</span>
2.对象初始化器
<span style="color:#3366FF;"> List<UserInfo> uilist = new List<UserInfo>() {
new UserInfo() { username = "小红", age = 18, address = "火星" },
new UserInfo() { username = "老老头", age = 68, address = "快乐星球" }
};
Linq进行对象多条件查询
List<UserInfo> result = (from temp in uilist
where (string.IsNullOrEmpty(username) ||temp.username==username) &&
(string.IsNullOrEmpty(address) || temp.address==address)
select temp).ToList();</span>
3.Linq自定义方法验证(
除了满足集合中的年龄等于输入了的年龄,还需要满足年龄在19到22岁
)<span style="color:#3366FF;">public static bool MyCheck(int listbefore,int age)
{
if (age <= 22 && age >= 19 && listbefore == age)
return true;
else
return false;
}</span>
4.Linq进行对象排序
<span style="color:#3366FF;">List<UserInfo> result = (from temp in uilist
orderby temp.age descending,temp.address ascending
select temp).ToList();
注意:如果排序多于一个必须先满足第一个排序,如果第一个一样在考虑第二个</span>
5.复合的from子句(查询包涵某些爱好的)
<span style="color:#3366FF;">循环接收条件
List<string> loverlist = new List<string>();
Console.WriteLine("请输入你想找的爱好");
while (true)
{
string lover = Console.ReadLine();
if (lover == "Q")
{
break;
}
else
{
loverlist.Add(lover);
}
}
更具接收到的条件查询
List<UserInfo> reesult = (from temp in uilist
from lover in temp.lover
where loverlist.Contains(lover)
select temp).ToList();</span>
6.Select子句,返回单字段与多字段
<span style="color:#3366FF;">单字段
//返回单字段
List<string> result = (from temp in uilist
where temp.address == "水星" || temp.address == "火星"
select temp.username)
.ToList();
多字段
List<UserInfo> reesult = (from temp in uilist
where temp.address == "水星" || temp.address == "火星"
select new UserInfo() { username = temp.username, address = temp.address })
.ToList();</span>
7.Select验证(验证成绩等级)
select new UserInfo() { username = temp.username, address = (temp.age<18)?"未成年":"成年了"}
8.可空类型
<span style="color:#3366FF;">Nullable<int>
写法2
int?
</span><p><span style="font-family:宋体;color:#3366FF;">如果不查询</span><span style="color:#3366FF;">age<span style="font-family:宋体;">字段默认是</span><span style="font-family:Calibri;">0</span><span style="font-family:宋体;">不太好,就需要使用可空类型</span></span></p>
9.弱类型
var a = 1;
var b = "cc";
var c = true;
Console.WriteLine(a.GetType().Name);
Console.WriteLine(b.GetType().Name);
Console.WriteLine(c.GetType().Name);
10.匿名类型
<span style="color:#3366FF;"> //匿名类型
var mytestobj = new {usernam ="悟空",age=18 };</span>
11.Select自定义函数验证
<span style="color:#3366FF;">public static string AgeType(int? age)
{
if (age < 18)
return "少年";
else if (age >= 18 && age <= 22)
return "青年";
else if (age > 22 && age <= 40)
return "中年";
else
return "无年";
}</span>
12.分部类
<span style="color:#3366FF;">关键字:partial
用的地方:
1:类特别大不适合放到一个地方
2:一部分代码是工具自动生成的,需要单独放到另外一个类里边
3:一个类需要多人合作开发</span>
13.泛型(重点)
<span style="color:#3366FF;">泛型:类型占位符,我在方法或类的时候类型不确定,类型是传的时候确定的
泛型方法:
//泛型方法
public static T GetT<T>(T v)
{
return v;
}
Console.WriteLine(GetT<int>(1));
Console.WriteLine(GetT<string>("abc"));
Console.WriteLine(GetT<bool>(true));
Console.WriteLine(GetT<double>(3.14));
泛型类:
class MyTest<T>
{
public T str;
public void Set(T _v)
{
str = _v;
}
public T Get()
{
return str;
}
}
泛型约束:
只能传值类型的约束:
//泛型方法
public static T GetT<T>(T v) where T:struct
{
return v;
}
约束必须有一个无参数的构造函数:
//泛型方法
public static T GetT<T>(T v) where T:new()
{
return v;
}
约束必须要实现某个接口:
public static T GetT<T>(T v) where T : IAnimals
{
return v;
}
约束必须要实现某个接口而且他必须要无参构造函数:
//泛型方法
public static T GetT<T>(T v) where T : IAnimals,new()
{
return v;
}
</span>