【问题标题】:Invoking Generic Method with the parameter of IEnumerable<T>使用 IEnumerable<T> 的参数调用通用方法
【发布时间】:2014-03-17 12:31:52
【问题描述】:

这是要调用的方法:

public static DataTable LinqToDataTable<T>(IEnumerable<T> varlist)
{
   ..
}

这是查询:

var list = from c in db.Person
           join i in db.Employment on c.ID equals i.personID
           join z in db.aspnet_UsersInCompany on i.ID equals z.EmploymentID
           join k in db.aspnet_Users on z.userID equals k.UserId
           join iy in db.WorkPlace on i.WorkplaceID equals iy.ID
           where i.Date == null && (db.Profile.Any(p => p.personID == c.ID) &&
           db.Employment.Any(y => y.personID == c.ID) && c.companyID == companyID2 && iy.ID == WorkPlaceID2)
           select new
           {
                no     = c.registryNo,
                name   = c.name + " " + c.surname,
                istart = i.EmpStartDate,
                isy    = iy.workplaceName,
                email  = k.UserName,
                IDs    = i.ID,
                IDM    = c.ID,
           };

我想调用LinqToDataTable 方法,发送list 作为参数。 我尝试使用&lt;T&gt;,但它不适用。

DataTable datatable = Tools.LinqToDataTable<>(list.ToList());

【问题讨论】:

  • Tools.LinqToDataTable(list.ToList()) 应该可以工作或Tools.LinqToDataTable(list)

标签: c# asp.net linq generics


【解决方案1】:

完全删除泛型参数:

DataTable datatable = Tools.LinqToDataTable(list.ToList());

编译器应该从那里推断出泛型类型。您甚至可以直接传递列表(根据定义,查询是可枚举的)。

【讨论】:

  • ToList 如果不打算立即执行,也不需要
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-06
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多