J'ai une requête LINQ comme celle-ci:
public List<tblStudent> GetNames() { var result = (from student in db.tblStudents.ToList() select new tblStudent { StudentID = student.StudentID, StudentName = student.StudentName, Email = student.Email, IsDeleted= student.IsDeleted //tblDepartment = department.tblStudents }); return result.ToList(); }
Lorsque j'ai exécuté cette requête, cela m'a donné le résultat:
Mais je ne veux pas voir de valeurs nulles dans mon résultat. Comment puis-je résoudre ce problème?
3 Réponses :
Vous pouvez utiliser un type anonyme pour renvoyer uniquement les membres souhaités lors du retour de la collection depuis le ApiController
Par exemple
public class MyApiController : ApiController { //... public IHttpActionResult MyControllerAction() { var result = myService.GetNames() .Select(student => select new { //<-- Note what was done here StudentID = student.StudentID, StudentName = student.StudentName, Email = student.Email, IsDeleted= student.IsDeleted }); return Ok(result.ToList()); } }
Il a jeté une erreur comme suit: Le nom 'Ok' n'existe pas dans le contexte actuel
@ HalilŞahin J'ai supposé que vous faisiez l'appel dans un ApiController
comme vous avez mentionné l'API Web basée sur les balises de la question. À quel type appartient GetNames ()
?
c'est un ApiController
@ HalilŞahin alors la méthode devrait exister docs.microsoft.com/en-us/dotnet/api/...
@ HalilŞahin juste pour s'assurer que la bonne version est utilisée, est le ApiController
dans un attribut [ApiController]
comme dans asp.net-core, ou est-il utilisé comme un classe de base comme MyController: ApiController
comme asp.net-web-api-2 +
mon projet n'est pas un projet .NetCore. et ma classe actuelle implémentée à partir d'une interface. Et mon contrôleur étendu d'ApiController
continuons cette discussion dans le chat .
Bien que je ne l'ai pas essayé, je m'attendrais à ce que vous puissiez configurer Json.NET pour ignorer les valeurs nulles lors de la sérialisation. Dans ConfigureServices
, écrivez ceci:
services.AddJsonFormatters(settings => settings.NullValueHandling = NullValueHandling.Ignore);
Utiliser un type anonyme à la place fonctionnerait aussi, mais cela devient plus compliqué si vous avez une liste où certains em > les objets ont des valeurs non nulles pour certaines propriétés, et d'autres objets ont des valeurs nulles. Il est bon d'être conscient des deux approches, afin que vous puissiez utiliser celle qui convient le mieux à n'importe quelle situation.
Je viens d'ajouter cette ligne sur mon WebApiConfig.cs
et mon problème a été résolu.
config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;