I visjs.net bin mit einem ZeitplanBestücken eine Liste, die ein Array mit Linq enthält
Probleme Ich habe anzuzeigen LINQ Schreiben eine Liste zu füllen, das eine Eigenschaft enthält, die ein Array
ist hier Dokumentation ist die visjs visjs doco
und einige Beispiel-Code visjs source code
Hier eine gekürzte Version der Probe in JavaScript ist. Ich brauche diese JSON von einem MVC-Controller
var groups = new vis.DataSet();
groups.add([
{
id: 1,
content: "Lee",
nestedGroups: [11,12]
}
]);
groups.add([
{
id: 11,
content: "cook",
},
{
id: 12,
content: "shop",
}
]);
Spoiler alert statt Javascript zu füllen: Ich weiß nicht, wie die nestedGroups Eigenschaft füllen
Dies ist die Klasse I für sie gebaut:
public class TimelineGroups
{
public int id { get; set; }
public string content { get; set; }
public string className { get; set; }
public string orderBy { get; set; }
public string[] nestedGroups { get; set; }
}
Dies ist die Controller-Methode, die es, mit Ausnahme der nestedGroups Eigenschaft auffüllt, und das funktioniert ganz gut:
public JsonResult EmployeeGroups()
{
List<TimelineGroups> e = (
from emp in db.Employees
where emp.Emp_Status == 1 && emp.EmployeeRole.IsChargeable == "Y"
orderby emp.EmpRole_ID, emp.Emp_Last_Name
select new TimelineGroups()
{
id = emp.Emp_ID,
content = emp.Emp_Name,
orderBy = emp.EmpRole_ID.ToString(),
className = "bte-" + emp.EmployeeRole.EmpRoleName
}
).ToList();
return Json(e, JsonRequestBehavior.AllowGet);
}
Das funktioniert alles korrekt, aber jetzt möchte ich verschachtelte Gruppen hinzufügen.
Aber ich weiß nicht, die LINQ benötigt, um die erforderlichen Daten in einem Array innerhalb einer Sammlung zu "schwenken".
Dies ist, was ich bisher:
public JsonResult EmployeeClientGroups()
{
// First load the client list which are children of employees
List<TimelineGroups> cg = (
from sw in db.ScheduleWorks
where sw.EndDate > DateTime.Now
select new TimelineGroups()
{
id = sw.Employee.Emp_ID * 1000 + sw.CustomerId,
content = sw.Customer.Customer_Name
}).Take(1000).Distinct().ToList();
// now load the employee list
// This includes client children
List<TimelineGroups> eg = (
from sw in db.ScheduleWorks
where sw.EndDate > DateTime.Now
select new TimelineGroups()
{
id = sw.Employee.Emp_ID,
// How do I populate this with sw.Employee.Emp_ID * 1000 + sw.CustomerId
nestedGroups = // What magic do I put here?
content = sw.Employee.Emp_Name,
}).Take(1000).Distinct().ToList();
// Add the employee groups to the client groups
cg.AddRange(eg);
return Json(cg, JsonRequestBehavior.AllowGet);
}
ich alle Client-IDs für einen bestimmten Mitarbeiter und „schwenken“, um sie in ein Array, passend posten als JSON
erhalten müssen um sie einzigartig zu machen und die Kinder-IDs entsprechen, I der Wert müssen schwenkbar ist:
sw.Employee.Emp_ID * 1000 + sw.CustomerId
Kann diese inline in einer LINQ-Anweisung durchgeführt werden?
AFAIK können Sie hinzufügen, in einem LINQ 'select', aber in diesem Fall versuchen Sie,' int' Wert zu einem 'string []' Array, das ist sicherlich eine ungültige Besetzung. Überprüfen Sie diese vereinfachte Fiedel und lassen Sie mich wissen, wenn Sie 'new string []' in 'nestedGroups' deklarieren, was Sie tun möchten: https://dotnetfiddle.net/40lDp9. –
Danke, dass du dir die Zeit genommen hast, eine Geige aufzustellen. Ich werde diese Lösung heute Nacht versuchen. Ich hoffe es ist wirklich so einfach! –
Für die Beispieldaten, die Sie freundlicherweise vorbereitet haben, sollte ich ein Mitglied der Liste mit Id = 1234 und nestedGroups = (Array von 1,2,3,4,5,6) sehen. Ich werde zu dir zurückkommen, nachdem ich es ausprobiert habe –