C# 如何修改GroupBy()方法的参数?
这是我的一个linq查询,它按范围名称筛选任务,然后按语言对它们进行分组C# 如何修改GroupBy()方法的参数?,c#,linq,C#,Linq,这是我的一个linq查询,它按范围名称筛选任务,然后按语言对它们进行分组 var transTasks = taskData .Where(t => t.RangeName == rName) .GroupBy(t => t.CultureID) .Select(g => new { language = g.Key, tasks = g }); 现在我想对不同的分组使用相同的查询
var transTasks = taskData
.Where(t => t.RangeName == rName)
.GroupBy(t => t.CultureID)
.Select(g => new { language = g.Key, tasks = g });
现在我想对不同的分组使用相同的查询。我不想按CultureID分组,而是想按TaskOrder分组
所以我创建了这样的变量
Func<QuoteTaskInfo, bool> predicate = null
if(tasktype == "translation")
{
groupPredicate = t => t.CultureID;
{
else
{
groupPredicate = t => t.TaskOrder;
}
Func谓词=null
如果(任务类型=“翻译”)
{
groupPredicate=t=>t.CultureID;
{
其他的
{
groupPredicate=t=>t.TaskOrder;
}
我收到以下错误:“无法转换表达式…因为某些返回类型无法转换为委托返回类型”。
关于如何编写将返回bool
的委托的任何帮助
Select()
也是如此。如果条件是任务顺序,那么Select的键应该是TaskOrder
,而不是语言
var transTasks = taskData
.Where(t => t.RangeName == rName)
.GroupBy(t => t.CultureID)
.Select(g => new { language = g.Key, tasks = g });
感谢您的帮助为什么您的代理首先返回一个bool
?GroupBy
的参数不是一个谓词——它是用来指定一个键的,它属于您的属性的任何类型。不明白:GroupBy不接受“谓词”,它接受“属性”,可以是布尔值,但不能。是否尝试将func类型更改为func
(如果CultureID和TaskOrder不属于同一tpye)?您将如何处理不同类型的语言
?它可以是字符串、整数等。您是对的,虽然它们都使用谓词。@Richard77不,它将始终是语言
。但它可以具有文化ID
或任务顺序