关于C#:方法’System.Linq.Queryable.SelectMany System.Linq.IQueryable的类型参数

The type arguments for method 'System.Linq.Queryable.SelectMany System.Linq.IQueryable

编辑我的知识库类时,会弹出一个错误

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 var applicantList = (from a in context.Profiles
                             join app in context.APPLICANTs
                                on a.PROFILE_ID equals app.Profile_id into joined
                              from j in joined.DefaultIfEmpty()//.OrderBy(v => v.APPLICANT_ID)
                             select j //<--  this is APPLICANTs type
                               ).Take(1000);

   applicantdata = applicantList
                  .SelectMany(c => c.APPLICANTs) //this line added
                  .AsQueryable().OrderBy(v => v.APPLICANT_ID).ToList();

                if (applicantdata.Any())
                {
                    Cache.Set("applicants", applicantdata, 30);
                }
            }
            return applicantdata;

我有个例外

1
.SelectMany(c => c.APPLICANTs) //this line added

说:

The type arguments for method 'System.Linq.Queryable.SelectMany(System.Linq.IQueryable, System.Linq.Expressions.Expression>>)' cannot be inferred from the usage. Try specifying the type arguments explicitly


SelectMany接受一个对象集合,其中每个对象都有一个集合属性。

您在第一个语句中选择了申请人集合,并在其上运行selectmany似乎没有意义。

签出这些链接以更好地了解selectmany。

http://msdn.microsoft.com/en-us/library/bb534336.aspxselect和selectmany之间的差异


selectmany用于"扁平化"列表。这里没有列表。您有一个匿名联接行的列表。

很难推断出你在查询什么,但是如果你想得到相关的行(申请人的行),你可以使用这个:

1
2
3
4
var applicantList = (from a in context.Profiles
                     join app in context.APPLICANTs
                     on a.PROFILE_ID equals app.Profile_id
                     select app).Take(1000)