2011-05-24 10 views
5

He visto cómo inicializar var to null. Esto no ayuda en mi situación. TengoInicializar var para anular

string nuller = null; 
var firstModel = nuller; 
if(contextSelectResult.Count() > 0) 
    firstModel = contextSelectResult.First(); 

me sale error

No se puede convertir implícitamente el tipo 'SomeNamespace.Model.tableName' a 'cadena'.

estoy tratando de evitar try/captura InvalidOperation de First() cuando no existe primero como su cara. Entonces, ¿cómo puedo superar el problema de alcance aquí?

+0

Prueba esto: firstModel = contextSelectResult.First ToString() (.) –

+0

Si omite el conteo y solo usa FirstOrDefault(), debe obtener un valor nulo de todos modos. – canon

+1

¿Desea que firstModel sea una cadena o un objeto de datos más complejo? Como lo ha definido, es una cadena (y el mensaje de error lo indica) –

Respuesta

6

Simplemente use FirstOrDefault() en su lugar. El punto completo de FirstOrDefault es devolver el primer elemento de la secuencia, si existe, o el valor predeterminado del tipo de elemento (es decir, nulo para todos los tipos de referencia) en caso contrario.

Tenga en cuenta que en otros casos en los que desea comprobar la existencia de cualquier elemento, utilizando Any() a veces puede ser más eficiente que Count() > 0 - que depende del contexto exacto, pero En mi opinión se trata de una manera más sencilla de expresar lo que eres buscando de todos modos.

7

En su lugar, puede usar FirstOrDefault().

firstModel = contextSelectResult.FirstOrDefault(); 

if(firstModel != null) 
{ 
    ... 
} 
2

Pruebe FirstOrDefault en su lugar. Devuelve null de forma predeterminada si no hay ningún elemento.

1

Si no hay Primera que va a ser un valor nulo para los tipos de referencia:

var firstModel = contextSelectResult.FirstOrDefault(); 
20

Puede probar esto:

var firstModel=(dynamic) null; 
+0

Esto funcionó para mí. Gracias Juan :) –

+1

No veo ningún beneficio de usar dinámica aquí. Incluso tendrá una sobrecarga debido al comportamiento dinámico. –

+0

O 'primerModelo dinámico = nulo;' – nawfal

0

Puede utilizar el genérico para este caso también

public static dynamic GetTheListOfDevicesDependOnDB(int projectID) 
{ 
    List<Devices_Settings> ListDevices_Settings = new List<Devices_Settings>(); 
    var db = new First_DataContext(); 
    var devices = (dynamic) null; 
    switch (projectID) 
    { 
     case (int)enmProjectType.First: 
      db = new First_DataContext(); 
      devices = db.Device_Fisrt.ToList(); 
      break; 
     case (int)enmProjectType.Second: 
      var db1 = new Second_DataContext(); 
      devices = db1.Device_Second.ToList(); 
      break; 

     default: 
      break; 
    } 

    foreach (var item in devices) 
    { 
     //TODO 
    } 

    return ListDevices_Settings; 

}

0

favor probar esta opción:

var var_name = (dynamic)null; 

o

var var_name = (Type*)null; 

Tipo *: por ejemplo -> string, var, int

Cuestiones relacionadas