编辑1
我很抱歉,但阅读2篇推荐文章后,我还是不明白,我应该使用什么。 据我所知,使用的IQueryable不是优选以各种理由但这是否排除了IEnumerable呢? 是一个DataTable真的是我最好的选择?
总之,我想,什么是首选的返回类型?
我有我想抽象出成DAL以下简单的LINQ查询。 什么是变种的类型,因此应我的方法是什么类型的?
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<T>
但是当我把一个断点,并运行它,它似乎调用自身的IEnumerable。 这是正确的,我应该如何申报我的方法?
这样的 - >
public static DataTable SearchPerson(string SearhParam)
{
ConnectDBDataContext context = new ConnectDBDataContext();
var persons = (from person in context.tblPersons
orderby person.LastName
select new { person.PersonID, person.LastName, person.FirstName, person.SSN });
var filteredPersonsList = persons.Where(p => p.LastName == SearhParam).ToList();
if (filteredPersonsList.Count == 0)
filteredPersonsList = persons.Where(p => p.LastName.StartsWith(SearhParam)).ToList();
var dataTable = filteredPersonsList.CopyLinqToDataTable();
return dataTable;
}
如果我使用IQueryable<T>
是什么<T>
或者我怎么知道这一点,我会回来吗?
谢谢!
供参考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);
}