我将Iqueryable发送到下面的函数
void Method<T>(ref IQueryable<T> qu)
{
foreach (T item in qu)
{
}
}
因为我需要使用tis函数来实现一些不同的Iqueryable 并使用
调用此方法Patient_BusinessEntity Be = new Patient_BusinessEntity();
IQueryable<PatientDataAccess> Query = Be.GetAllRow();
Method<PatientDataAccess> (ref Query);
他的工作成功
现在我想在循环中使用item(循环变量)的属性
我该怎么做?
由于 IFA
答案 0 :(得分:3)
首先,有没有理由让它成为ref
参数?如果要返回新值,使用方法的返回值几乎总是比使用ref
参数更好。
现在,它是一种通用方法 - 您如何知道要在循环中访问哪个属性?如果它已修复并且您知道T将始终是声明属性的某些子类型,则可以添加约束:
void Method<T>(IQueryable<T> query) where T : SomeType
{
foreach (T item in query)
{
int size = item.Size; // Size declared in SomeType
// ...
}
}
如果你只是在执行时知道它 - 或者它没有被任何常见的基类型声明 - 你将不得不使用反射来获取它......或者你可以将它传递给方法:
voidMethod<T>(IQueryable<T> query, Func<T, int> sizeSelector)
{
foreach (T item in query)
{
int size = sizeSelector(item);
// ...
}
}
如果您可以提供有关您尝试做的更多信息,我们可以为您提供更多帮助。