最近在学习EF有关的知识,在为了学习清楚此内容,又在这个过程中学习了Lambda表达式,委托,HttpContext相关内容,因此,此篇博文对他人无任何价值,只是为了记录本人近日学习的一些情况,以便于日后的复习,巩固以及提高。
一:EF相关基础知识:转自:http://blog.csdn.net/fanbin168/article/details/49584777
二:HttpContext相关知识:转自:http://www.cnblogs.com/wujy/p/3264475.html。HttpContext的生存周期是一次请求开始到服务器处理结束,并且可以通过HttpContext.items存储一些临时的数据,进而保证线程内唯一。EF对象的创建,当然需要做成线程内唯一,否则可能会造成数据不一致。可以通过如下代码实现:
TestDemoEntities db = null;
if (HttpContext.Items["TestDemoEntities"] == null)
{
db = new TestDemoEntities();
HttpContext.Items["TestDemoEntities"] = db;
}
else
{
db = (TestDemoEntities)HttpContext.Items["TestDemoEntities"];
}
三:IQueryable与IEnumerable接口,Queryable和Enumerable类分别为此两个接口提供了许多扩展的方法。IQueryable接口还具有延时加载的效果。
转自:http://blog.csdn.net/q646926099/article/details/52297897,http://blog.csdn.net/ydm19891101/article/details/50969323
四:委托(泛型委托,多播委托),下面直接看示例代码:
1.匿名函数及Lambda表达式的书写:
class Program
{
public delegate void del1();
public delegate void del2(string str);
public delegate int del3(string name);
static void Main(string[] args)
{
//委托函数就可以看做一个函数的父类,委托函数可以指向一个函数签名与其一致的函数
//1.没有参数且没有返回值的委托函数的写法
//del1 d1 = test1;
//del1 d1 = delegate () { }; //匿名函数的写法
//del1 d1 = () => { Console.WriteLine("Lambda表达式的写法"); };
//2.有参数,但是没有返回值的委托函数的写法
//del2 d2 = test2;
//del2 d2 = delegate (String name) { };
//del2 d2 = (string name) => { }; //string可以简化的,因为可以推断出类型
//3.有返回值的委托函数的写法
//del3 d3 = test3;
//del3 d3 = delegate () { return 123; };
//del3 d3 = (name) => { return 123; };
}
public static void test1()
{
}
public static void test2(String name)
{
}
public static int test3(string name)
{
return 123;
}
}
2.泛型委托:
class Program
{
public delegate int DelCompare<T>(T t1, T t2);
static void Main(string[] args)
{
int[] nums = { 1, 2, 3, 4, 5 };
//int max = GetMax<int>(nums, Compare1);
var numlist= nums.Where<int>(n => n > 3);
foreach(var i in numlist)
{
Console.WriteLine(i);
}
int max = GetMax<int>(nums, (a, b) => { return a - b; });
Console.WriteLine(max);
string[] names = { "abcdefg", "fdsfds", "fdsfdsfdsfdsfdsfdsfdsfsd" };
string max1 = GetMax<string>(names, (string s1, string s2) => { return s1.Length - s2.Length; });
Console.WriteLine(max1);
Console.ReadKey();
}
public static T GetMax<T>(T[] nums, DelCompare<T> del)
{
T max = nums[0];
for (int i = 0; i < nums.Length; i++)
{ //要传一个比较的方法
if (del(max, nums[i]) < 0)
{
max = nums[i];
}
}
return max;
}
public static int Compare1(int n1, int n2)
{
return n1 - n2;
}
}
3.多播委托:
public delegate void Test();
class Program
{
static void Main(string[] args)
{
Test t1 = test1;
t1 += test2;
t1 += test3;
t1 += test4;
t1 -= test3;
t1();
}
public static void test1()
{
Console.WriteLine("我是test1");
}
public static void test2()
{
Console.WriteLine("我是test2");
}
public static void test3()
{
Console.WriteLine("我是test3");
}
public static void test4()
{
Console.WriteLine("我是test4");
}
}
结语:由于我只是一个初学者,并且文章也只是用于自己记录学习情况,如果内容给各位造成了不必要的困扰和误导,十分抱歉,并欢迎各位指正。