Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何修改GroupBy()方法的参数?_C#_Linq - Fatal编程技术网

C# 如何修改GroupBy()方法的参数?

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 }); 现在我想对不同的分组使用相同的查询

这是我的一个linq查询,它按范围名称筛选任务,然后按语言对它们进行分组

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
任务顺序