Ich habe gesehen, dies in Code einmal oder zweimal getan, aber jetzt kein Beispiel finden. Bis vor kurzem arbeitete ich in Webforms und bin zu MVC gewechselt. Ich habe mich umgesehen und nicht viel gefunden. Der unten stehende Code stammt von meinem Controller, um die Werte einzublenden und in meinem Ansichtsmodell anzuzeigen. Ich muss die m.body.MembersId von MSMQ nehmen. Ich weiß, was das Problem ist, ich weiß nicht, wie man Linq so benutzt.Casting und Verkettung in einer Zeile
Die Situation, ich muss das alles in einer Linie tun. Werfen Sie die memberIds-Informationen, die ursprünglich eine Liste mit dem Namen MembersId waren, zurück in eine Liste, um sie anzuzeigen, aber führen Sie auch eine string.join-Anweisung aus, sodass die gesamte Liste als eine Zeichenfolge angezeigt wird. Während ich mir bewusst bin, wie ich beides alleine machen kann, aber in einer Linie zu tun, bewies mich. Ich werde offen zugeben, dass ich linq ziemlich neu bin und lerne, während ich gehe. Dies ist die Klasse
public class MsgChildClass{
public string SourceSystem { get; set; }
public List<string> MemberIds { get; set; }
public string ParentId { get; set; }
public string Error { get; set; }
}
dies die Funktion
istpublic ActionResult GetAllMessages() {
string queueName = (ViewBag.QueueName != null) ? ViewBag.QueueName : Request.QueryString["queueName"];
Session["CurrentQueueName"] = queueName;
TempData["queueName"] = queueName;
ViewBag.QueueName = queueName;
var queue = _Queues[queueName];
queue.MessageReadPropertyFilter.ArrivedTime = true;
queue.MessageReadPropertyFilter.Body = true;
queue.Formatter = new JsonMessageFormatter();
var messages = queue.GetMessages();
var model = messages.Select(m =>
new ViewModel() {
Id = m.Id,
Date = m.ArrivedTime,
SourceSystem = ((MsgChildClass)m.Body).SourceSystem,
DeletedMemberIds = ((MsgChildClass)m.Body).DeletedMemberIds,//OrderByDescend(x => x); string.Join(",",((MsgChildClass)m.Body).DeletedMemberIds),
ParentMemberId = ((MsgChildClass)m.Body).ParentId,
Error = ((MsgChildClass)m.Body).Error,
QueName = queueName
}).ToList();
return Json(model.ToList(), JsonRequestBehavior.AllowGet);
}
Ansicht Modell
public class ViewModel
{
[Required]
public string Id { get; set; }
//[Required]
[Display(Name = "Arrival Time")]
public DateTime Date { get; set; }
[Required]
[Display(Name = "Source System")]
public string SourceSystem { get; set; }
[Required]
[Display(Name = "Member Ids")]
public List <string> MemberIds { get; set; }
[Required]
[Display(Name = "Parent Member Id")]
public string ParentMemberId { get; set; }
[Display(Name = "Error")]
public string Error { get; set; }
[Display(Name = "QueName")]
public string QueName { get; set; }
}
Dies ist, was ich habe. Alles funktioniert korrekt außer den Members. Das Debugging zeigt mir, dass die Members den Wert haben, aber ich bohre nicht weit genug. Also hoffentlich kann mir jemand ein wenig helfen, da es an diesem Punkt recht wenige Stunden waren. Google ist großartig, aber er hat mir nicht geholfen.
Sind Sie sicher, dass es nicht nur ein Tippfehler ist? Sie vermissen ein ',' nach '((MsgChildClass) m.Body) .MemberIds'. –
@Joel Von welchem Typ ist '((MsgChildClass) m.Body) .MemberIds'? Was ist falsch an deinem aktuellen Code? – har07
@AlexanderDerck das war nur ein Tippfehler von der Kopie und Paste Entschuldigung darüber – Joel