Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.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# linq表达式(和异常类型)的结果出错_C#_Linq_Type Conversion - Fatal编程技术网

C# linq表达式(和异常类型)的结果出错

C# linq表达式(和异常类型)的结果出错,c#,linq,type-conversion,C#,Linq,Type Conversion,我班上有一个linq查询。当我试图返回一个或另一个结果时,编译器抛出一个与“匿名类型”相关的转换类型错误,我找不到解决方案 这是我的代码: public static string VerificaExame(string desc) { var model = new ExameContext(); var res = model.DbExame.Where(exame => exame.Descricao.Trim() == desc.Trim()).Select(ex

我班上有一个linq查询。当我试图返回一个或另一个结果时,编译器抛出一个与“匿名类型”相关的转换类型错误,我找不到解决方案

这是我的代码:

public static string VerificaExame(string desc)
{
    var model = new ExameContext();
    var res = model.DbExame.Where(exame => exame.Descricao.Trim() == desc.Trim()).Select(exame => new { Id = exame.Id, Codigo = exame.Codigo });
    if (res == null)
        res = model.DbExame.Where(exame => exame.Codigo.Trim() == desc.Trim()).Select(exame => new { Id = exame.Id, Descricao = exame.Descricao });
    var ret = res.FirstOrDefault();
    return JsonConvert.SerializeObject(ret);
}
以及错误消息:

无效的匿名类型成员声明符。匿名类型成员必须使用成员分配、简单名称或成员访问权限声明

此错误是指:

res = model.DbExame.Where(exame => exame.Codigo.Trim() == desc.Trim()).Select(exame => new { Id = exame.Id, Descricao = exame.Descricao });
使用其他变量(不要使用
res


你的res变量不是每次都返回不同的对象吗?真的,res previous定义的成员不能转换或是只读的。是的,我甚至想过,但我想这可能是另一种方式。。。谢谢@Ahmed KRAIEMOh Noooo:(运算符“?”不能应用于“AnonymousType#1”和“AnonymousType#2”类型的操作数。我用sugestion解决了这个问题,使用了2个变量。;)是的,抱歉,已编辑(已将强制转换添加到
对象
)。考虑接受答案。
var res = model.DbExame.Where(exame => exame.Descricao.Trim() == desc.Trim()).Select(exame => new { Id = exame.Id, Codigo = exame.Codigo });
//^ Now res is of a specific type (ie: IEnumerable<Anonymous1>)
if (res == null)
    var res2 = model.DbExame.Where(exame => exame.Codigo.Trim() == desc.Trim()).Select(exame => new { Id = exame.Id, Descricao = exame.Descricao });
    //^ you cant affect res2 to res because they are of different type
public static string VerificaExame(string desc)
{
    var model = new ExameContext();
    object res = (object)model.DbExame.Where(exame => exame.Descricao.Trim() == desc.Trim())
                                .Select(exame => new { Id = exame.Id, Codigo = exame.Codigo })
                                .FirstOrDefault()
        ??
        (object)model.DbExame.Where(exame => exame.Codigo.Trim() == desc.Trim())
                        .Select(exame => new { Id = exame.Id, Descricao = exame.Descricao })
                        .FirstOrDefault();

    if (res != null)
        return JsonConvert.SerializeObject(res);
    return JsonConvert.SerializeObject("");//Or throw an exception
}