C# 我的DAL应该返回数据表还是我…不管什么<>;? 编辑1
我很抱歉,但是在阅读了这两篇推荐文章之后,我仍然不明白我应该使用什么。我知道出于各种原因,使用IQueryable不是首选,但这是否也消除了IEnumerable?数据表真的是我最好的选择吗 简言之,我想,什么是首选的回报类型C# 我的DAL应该返回数据表还是我…不管什么<>;? 编辑1,c#,linq,linq-to-sql,n-tier-architecture,C#,Linq,Linq To Sql,N Tier Architecture,我很抱歉,但是在阅读了这两篇推荐文章之后,我仍然不明白我应该使用什么。我知道出于各种原因,使用IQueryable不是首选,但这是否也消除了IEnumerable?数据表真的是我最好的选择吗 简言之,我想,什么是首选的回报类型 我有以下简单的LINQ查询,我想将其抽象为DAL。var的类型是什么?因此,我的方法应该是什么类型 ConnectDBDataContext context = new ConnectDBDataContext(); var l
我有以下简单的LINQ查询,我想将其抽象为DAL。var的类型是什么?因此,我的方法应该是什么类型
ConnectDBDataContext context = new ConnectDBDataContext();
var lName = textEdit1.Text;
var searchByPersonLName = from c in context.tblPersons
where c.LastName == lName
orderby c.LastName
select new { c.FirstName,c.LastName,c.PersonID};
dataGridView1.DataSource = searchByPersonLName;
当我在VS中将鼠标悬停在它上面时,它会显示IQueryable
,但当我输入一个断点并运行它时,它似乎称自己为IEnumerable。哪个是正确的,我应该如何声明我的方法
像这样-->
如果我使用IQueryable
什么是
,或者我如何知道这一点以及我会返回什么
谢谢
下面是CopyToDataTable()的参考
public static DataTable CopyLinqToDataTable<T>(this IEnumerable<T> source)
{
return new ObjectShredder<T>().Shred(source, null, null);
}
public static DataTable CopyLinqToDataTable<T>(this IEnumerable<T> source,
DataTable table, LoadOption? options)
{
return new ObjectShredder<T>().Shred(source, table, options);
}
公共静态数据表copylinkToDataTable(此IEnumerable源)
{
返回新的ObjectShreder().Shred(source,null,null);
}
公共静态数据表CopyLinqToDataTable(此IEnumerable源,
数据表,加载选项?选项)
{
返回新的ObjectShreder().Shred(源、表、选项);
}
首先,IQueryable实现了IEnumerable,这就是为什么您可能同时看到这两个。看
一般来说,我建议DAL尽可能返回实际对象
我想听听关于如何做和如何不做你建议的事情的指导方针。简短回答,不要返回IQueryable
编辑:
例如:
首先,IQueryable实现了IEnumerable,这就是为什么您可能同时看到这两个。看 一般来说,我建议DAL尽可能返回实际对象 我想听听关于如何做和如何不做你建议的事情的指导方针。简短回答,不要返回IQueryable 编辑: 例如:
他的意思是将数据映射到希望DAL返回的对象 在回答第一个问题时,“var”实际上只是变量的缩写,类型是赋值中定义的类型
var myvariable = string.empty;
在本例中,类型为字符串类型
var myreader = new StringReader();
而在本例中,类型为StringReader
至于你的第二个问题“是什么”。T是泛型类型
例如,dal将返回实际对象的位置:
public Product GetProduct(int ProductID)
{
var product = from p in db.MyTable
where p.productID == ProductID
select new product { name = p.name, pricepoint = p.pricepoint, qty = p.quantity };
return product;
}
他的意思是将数据映射到希望DAL返回的对象 在回答第一个问题时,“var”实际上只是变量的缩写,类型是赋值中定义的类型
var myvariable = string.empty;
在本例中,类型为字符串类型
var myreader = new StringReader();
而在本例中,类型为StringReader
至于你的第二个问题“是什么”。T是泛型类型
例如,dal将返回实际对象的位置:
public Product GetProduct(int ProductID)
{
var product = from p in db.MyTable
where p.productID == ProductID
select new product { name = p.name, pricepoint = p.pricepoint, qty = p.quantity };
return product;
}
谢谢,你说的“实物”是什么意思?你能给我举个简单的例子吗。通常我使用L2S创建的类,或其中的一个数组。我将以我的DAL如何从我的文件库返回文件对象为例进行编辑。谢谢,你说的“实际对象”是什么意思?你能给我一个简单的例子吗?Se Davids post,它解释了我的意思。通常我使用L2S创建的类,或其中的一个数组。我将以DAL如何从我的文件库返回文件对象为例进行编辑。