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吧?但是方法要怎么写? 展开
如何编写这样的一个方法:
public List<T> GetXXXXX<T>(???);
返回的结果是我给定的T类型
如果我表里面有10个表,我只需要用一个这个方法就查询这10个表,能实现不?
???的内容也许可以是:Func<T,bool> func吧?但是方法要怎么写? 展开
3个回答
展开全部
我不知道你说的是不是我现在所做的,感觉有点相似,我没太明白你所说的内容,我想把我做的描述下。
我定义了一个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)这只是个例子,用来查找数据,你可以在这个类里写删除 和修改的方法,然后把具体的操作通过委托传进来
我定义了一个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如何从数据库读取数据的方法,方法里面要实现具体的数据库连接等操作,那不就实现了吗
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
尝试过了,没有成功,不太容易。
假设你有一张表:Person,那么用EntityFramework的情况下,只要用:
entities.Person.ToList<Person>();不就可以了,这个本身就是泛型方法啊。
假设你有一张表:Person,那么用EntityFramework的情况下,只要用:
entities.Person.ToList<Person>();不就可以了,这个本身就是泛型方法啊。
追问
那我要where呢,怎么办?而且主要是添加修改删除记录方面,我想3个方法直接能通用添加、修改、删除所有的表……
其实还是3层架构的问题,我想尝试分层来做,于是就…………
追答
EntityFramework或者Linq都不需要再分层了,他们本身就已经分层了:业务层+数据访问层
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(from t1 in Table1
select t1)
.Concat(
from t2 in Table2
select t2
).Concat
依此类推
当然你也可以用Expression Tree自己做查询,具体你要看msdn了
select t1)
.Concat(
from t2 in Table2
select t2
).Concat
依此类推
当然你也可以用Expression Tree自己做查询,具体你要看msdn了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询