LINQ声明变量的类型是什么

时间:2018-12-21 10:33:24

标签: c# entity-framework linq

我不知道LINQ会导致什么变量。 我想为结果LINQ创建变量为空。让我们看一下示例

int Id = 1;
IEnumerable<object> permission = null;
if(Id != 0) {
    permission = from x in db.foo
                 join y in db.bar
                 on x.Id equal y.fkBar
                 select new {
                     Id = x.Id,
                     Name = y.Name }
    permission = permission.where(a => a.Name = "xxxx")
} else {
    permission = from x in db.foo
                 select new {
                     Id = x.Id,
                     Name = "" }
    permission = permission.where(a => a.Name = "yyyyy")
}
return permission;

where clause“对象”中的错误不包含“名称”的定义,并且找不到可接受的扩展方法“名称”,该方法接受“对象”类型的第一个参数

2 个答案:

答案 0 :(得分:1)

我将创建一个以IdName作为属性的类,然后permission将成为IEnumerable<YourClassName>

int Id = 1;
IEnumerable<YourClassName> permission = null;
if(Id != 0) {
    permission = from x in db.foo
        join y in db.bar
        on x.Id equal y.fkBar
        select new YourClassName {
            Id = x.Id,
            Name = y.Name }
} else {
    permission = from x in db.foo
        select new YourClassName {
            Id = x.Id,
            Name = "" }
}

return permission;

IMO,在这种情况下使用类是一种方法,并且比仅使用dynamicobject类型更安全。

答案 1 :(得分:0)

使用classpath 'com.google.gms:google-services:3.2.0'而不是使用var permission进行声明,

相关问题