2.3.13 ToArray、 ToList、ToDictionary、ToLookup
- 评论:0
- 浏览:526
- RSS:30
l ToArray:将查询结果转化成为数组,此函数不延时加载。
例:
protected void btnToArray_Click(object sender, EventArgs e)
{
ProvinceCityDataContext dal = new ProvinceCityDataContext();
string[] strs = dal.Cities.Select(s => s.CityName).ToArray();
foreach (string str in strs)
Response.Write(str + "<br>");
}
protected void btnToArray1_Click(object sender, EventArgs e)
{
ProvinceCityDataContext dal = new ProvinceCityDataContext();
string[] strs = (from c in dal.Cities select c.CityName).ToArray();
foreach (string str in strs)
Response.Write(str + "<br>");
}
以上执行结果均为返回一个城市列表的字符串数组。
l ToList:将查询结果创建成一个List集合,此函数不延时加载。
例:
protected void btnToList_Click(object sender, EventArgs e)
{
ProvinceCityDataContext dal = new ProvinceCityDataContext();
var q = dal.Cities.ToList();
foreach (var i in q)
Response.Write(i.CityName);
}
l ToDictionary:将查询结果创建成一个键/值(Key/Value) 的数据字典。由于每一个Key必须唯一,不可重复,故产生的结果是一对一的关系,此函数不延时加载。
例:
protected void btnToDictionary_Click(object sender, EventArgs e)
{
ProvinceCityDataContext dal = new ProvinceCityDataContext();
var q = dal.Cities.ToDictionary(s => s.CityName,s=>s.ID);
foreach(var i in q)
{
Response.Write(i.Key + "|" + i.Value+"<br>");
}
}
以上为级联表达式
protected void btnToDictionary1_Click(object sender, EventArgs e)
{
ProvinceCityDataContext dal = new ProvinceCityDataContext();
var q = (from c in dal.Cities select c).ToDictionary(s => s.CityName, s => s.ID);
foreach (var i in q)
{
Response.Write(i.Key + "|" + i.Value + "<br>");
}
}
以上执行结果为返回一个包含城市名称、城市ID的字典集合。读者可以注意一下最后输出的值是采用Key/Value形式存在的。
※注:若我将.ToDictionary(s => s.CityName, s => s.ID);修改成.ToDictionary(s => s. ProvinceID, s => s.ID);由于省份ID可能重复,则违反了Key唯一的冲突,故会报错,请大家注意。同时也是和ToLookUp函数的区别所在。
l ToLookup:将查询结果创建成一个键/值(Key/Value) 的LookUp集合。由于每一个Key可不唯一,可重复,故产生的结果可能是一对多的关系,此函数不延时加载。
例:
protected void btnToLookup_Click(object sender, EventArgs e)
{
ProvinceCityDataContext dal = new ProvinceCityDataContext();
var q = dal.Cities.ToLookup(s => s.ProvinceID, s => s.CityName);
foreach (var i in q)
{
Response.Write("当前省份ID=" + i.Key+"的城市为:<br>");
foreach (var x in i)
{
Response.Write(x+"<br>");
}
}
}
以上执行结果为将省份相同的城市分组列表出来。