如何使用 LinQ 和 List<T> 正确设置函数参数?
How To correctly set Parameters for Function with LinQ and List<T>?
我正在为 IEnumerable<ISeries>
函数的参数苦苦挣扎。
我创建了一个 interface AllProperties
,它结合了我在某些时候需要的来自不同 类 的所有属性。
这是我现在的IEnumerable<ISeries> GetDepartments
:
public IEnumerable<ISeries> GetDepartments()
{
IEnumerable<ISeries> series = Employees.GroupBy(x => x.Department).ToList().Select(x => new PieSeries<double>
{
Values = new List<double> { x.Count() },
Name = x.Key,
});
return series;
}
它工作得很好,但我必须 copy/paste 每个列表的代码和 属性 我想避免这种情况。
我试图创建的函数的想法是,我引用了一个 List
和一个给定的 属性 和 return 一个 IEnumerable<ISeries>
这是我目前得到的:
public IEnumerable<ISeries> GetEnumerableGroupBy<T,TKey>(List<T> list, Func<AllProperties, TKey> myGroupingProperty)
{
IEnumerable<ISeries> series = list.GroupBy(myGroupingProperty).ToList().Select(x => new PieSeries<double>
{
Values = new List<double> { x.Count() },
Name = x.ToString(),
});
return series;
}
//Calling the function like this
GetEnumerableGroupBy(Employees, x => x.Department);
现在我收到错误,List<T>
不包含 GroupBy
的定义,我不知道如何解决这个问题。
如有任何帮助,我们将不胜感激。
你非常接近。您根本不需要 AllProperties
界面。相反,只需将函数参数设为通用 T
类型即可。
public IEnumerable<ISeries> GetEnumerableGroupBy<T, TKey>(List<T> list, Func<T, TKey> myGroupingProperty)
{
...
}
您的其余代码应该可以正常工作。
我正在为 IEnumerable<ISeries>
函数的参数苦苦挣扎。
我创建了一个 interface AllProperties
,它结合了我在某些时候需要的来自不同 类 的所有属性。
这是我现在的IEnumerable<ISeries> GetDepartments
:
public IEnumerable<ISeries> GetDepartments()
{
IEnumerable<ISeries> series = Employees.GroupBy(x => x.Department).ToList().Select(x => new PieSeries<double>
{
Values = new List<double> { x.Count() },
Name = x.Key,
});
return series;
}
它工作得很好,但我必须 copy/paste 每个列表的代码和 属性 我想避免这种情况。
我试图创建的函数的想法是,我引用了一个 List
和一个给定的 属性 和 return 一个 IEnumerable<ISeries>
这是我目前得到的:
public IEnumerable<ISeries> GetEnumerableGroupBy<T,TKey>(List<T> list, Func<AllProperties, TKey> myGroupingProperty)
{
IEnumerable<ISeries> series = list.GroupBy(myGroupingProperty).ToList().Select(x => new PieSeries<double>
{
Values = new List<double> { x.Count() },
Name = x.ToString(),
});
return series;
}
//Calling the function like this
GetEnumerableGroupBy(Employees, x => x.Department);
现在我收到错误,List<T>
不包含 GroupBy
的定义,我不知道如何解决这个问题。
如有任何帮助,我们将不胜感激。
你非常接近。您根本不需要 AllProperties
界面。相反,只需将函数参数设为通用 T
类型即可。
public IEnumerable<ISeries> GetEnumerableGroupBy<T, TKey>(List<T> list, Func<T, TKey> myGroupingProperty)
{
...
}
您的其余代码应该可以正常工作。