C#可以编写一个方法对T表查询并返回List<T>吗

用的是linqtoentities。如何编写这样的一个方法:publicList<T>GetXXXXX<T>(???);返回的结果是我给定的T类型如果我表里面有10个表,... 用的是 linq to entities 。
如何编写这样的一个方法:
public List<T> GetXXXXX<T>(???);
返回的结果是我给定的T类型
如果我表里面有10个表,我只需要用一个这个方法就查询这10个表,能实现不?
???的内容也许可以是:Func<T,bool> func吧?但是方法要怎么写?
展开
 我来答
百度网友43e0f0a
2012-05-08 · 超过31用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:77.1万
展开全部
我不知道你说的是不是我现在所做的,感觉有点相似,我没太明白你所说的内容,我想把我做的描述下。
我定义了一个public class MDB<T,K>这样的类,目的是通过此类中的方法实现对内存数据增删查改,如果发现内存中没有我要的数据,将会到数据库中查找,我的库里大概有20个表,所有的操作都是通过这个类里的方法统一完成的(也就是说我用同一个方法完成了所有表相同的操作)
这个类的内容中有类似如下方法的很多方法
1)public MDBData<T> GetTable(K key, DataInitializer<K> GetData, TableFormer dataFormer, out string msg)
其中
DataInitializer<K> GetData 是一个委托的实例,用来在初始化是去数据库中取出不同的数据
TableFormer dataFormer 这也是一个委托的实例,用来把数据库中的数据装到List<T>中
2)这只是个例子,用来查找数据,你可以在这个类里写删除 和修改的方法,然后把具体的操作通过委托传进来
追问
饿,我没看懂啊,能说简单点吗?比如我有一个Product表和一个Customer表,能否只用一个方法
比如说
public List Query(Expression> where)
这样的方法,然后我调用的时候就:
List p = Query(expr) 或者
List p = Query(expr)
就可以取得Product表和Customer表的内容。
追答
就我对“linq 到对象”的了解,想通过传lambda表达式来完成你的想法是不行的。因为所有linq到对象的方法都是扩展方法,这些方法的施用对象是已经存在于内存中的集合,如果你在内存中已经存在某种集合你可以通过linq到对象来对此集合(已实现IEnumerable)进行操作,但是如果你想通过传递lambda来从数据库捞取数据恐怕要用到linq to sql,很惭愧我对linq to sql 也不熟悉。
如果你把参数定义成委托的话应该也可以实现,当你实例化的时候不是传递一个lambda,而是一个告诉Query如何从数据库读取数据的方法,方法里面要实现具体的数据库连接等操作,那不就实现了吗
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
郏鸿祯C6
2012-05-03 · TA获得超过4549个赞
知道小有建树答主
回答量:1601
采纳率:50%
帮助的人:1198万
展开全部
尝试过了,没有成功,不太容易。
假设你有一张表:Person,那么用EntityFramework的情况下,只要用:
entities.Person.ToList<Person>();不就可以了,这个本身就是泛型方法啊。
追问
那我要where呢,怎么办?而且主要是添加修改删除记录方面,我想3个方法直接能通用添加、修改、删除所有的表……
其实还是3层架构的问题,我想尝试分层来做,于是就…………
追答
EntityFramework或者Linq都不需要再分层了,他们本身就已经分层了:业务层+数据访问层
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
草薙在
2012-05-03 · TA获得超过4795个赞
知道大有可为答主
回答量:6187
采纳率:50%
帮助的人:6303万
展开全部
(from t1 in Table1
select t1)
.Concat(
from t2 in Table2
select t2
).Concat
依此类推

当然你也可以用Expression Tree自己做查询,具体你要看msdn了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式