永发信息网

asp.net 使用linq 查询一个集合对象

答案:1  悬赏:50  手机版
解决时间 2021-11-14 23:25
asp.net 使用linq 查询一个集合对象
最佳答案
具体方法如下:
匿名类型的传递
static void Main(string[] args)
{
var User = GetAnonymous().Cast(new { UserName = "", LastLoginIp = "" });
Console.Write(User.UserName);
}

static object GetAnonymous()
{
var User = new { UserName = "yaosansi", LastLoginIp = "127.0.0.1" };
return User;
}
当定义一个匿名类型,只能通过object类型传递,传递后编译器将无法获悉匿名类型的实际类型。
这行可以通过Cast扩展方法来进行强制转换。以下是Cast方法的原型。

public static T Cast(this object o, T t)
{
return (T)o;
}

生成匿名类型的List
var User = GetAnonymous().Cast(new { UserName = "", LastLoginIp = "" });
var list = new List();
原理和上面一致。
var User = new { UserName = "yaosansi", LastLoginIp = "127.0.0.1" };
var list = User.MakeList();
list.Add(User);
Console.Write(list[0].UserName);
MakeList()方法:
public static List MakeList(this T t)
{
return new List();
}

在List中Add一个User:
public static List MakeList(this T t,params T[] items)
{
return new List(items);
}
这时调用的时候可以写成:
var User = new { UserName = "yaosansi", LastLoginIp = "127.0.0.1" };
var list = User.MakeList(User);
Console.Write(list[0].UserName);
LINQ中是多表查询的。
var q =
from p in db.Products
where p.Supplier.Country == "USA" && p.UnitsInStock == 0
select p;
以上的查询是两个有关系的表,并且返回的只是一个表的内容,
这种情况下可以在数据层中返回强类型的List。如:
public List SelectProducts()
{
var q =
from p in db.Products
where p.Supplier.Country == "USA" && p.UnitsInStock == 0
select p;
return q.ToList;
}

如果返回的是单行数据的结果集就可以前面提到的
使用 匿名类型的传递 得到需要的结果.
public object SelectProducts()
{
var q =
from p in db.Products
where p.Supplier.Country == "USA" && p.UnitsInStock == 0
select new {p.UnitsInStock,p.Supplier.Sid};
var result = q.Single();
return result;
}
这个前提是业务逻辑层需要知道数据层的匿名类型中的具体类型。
方法一:
自定义与返回类型相同结构的类,
public class CustomQuery
{
public uint UnitsInStock { get; set; }
public int Sid { get; set; }
}
这样在查询结果为多个表的结果集时,就可以解决了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
不要给我也瞧不起你,和,我瞧不起你,是不是一
永恒的瞬间,永远的感动作文
戴尔0p89n9主板能加装DDR3不
为什么中国动画要抄袭小日本
对一个陌生人 想看清楚他的模样 这代表着什么
向前金服的P2P平 台,这个和向上金服是什么关
不如这样吧 歌词
大土屋村地址好找么,我有些事要过去,
女主角彩妆美甲地址有知道的么?有点事想过去
是也非也下句该怎么说
盖房子上梁用随礼钱吗?
甬籍书画艺术家
18650电池三节用12.5伏稳压充电可以吗
公务员考试行测是负4分是什么意思
土地面是0·|5亩宽是14·5米,长是多少米?
推荐资讯
怎么去除硅胶印
杭州飚车撞死人车牌号为浙A892E9保时捷凯宴越
大人舌头上掉舌苔怎么办
百什么孝为先
是这样的 我们KTV要跟火锅店合作 但是火锅店
用“美不胜收”写一句话
一个数除以12,如果被除数增加36,那么商增加3
主动刹车的主动安全系统时什么意思?
茂名到上海K521次是否到站八月一号发的车拜托
小狗挨打后为什么流口水?
创维 55e360e 55怎么用wifi看电视
tvb幕后玩家 第一集叫峰峰是哪个演员,叫什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?