Hallo Ich schreibe linq Abfrage um Daten aus mehreren Tabellen zu erhalten. Ich versuche, Array von Objekten wie unten zu erhalten.Wie man Array von linq zurückgibt?
processobject retObj = new processobject();
retObj =(from c in entityObject.NCT_Process
join user in entityObject.NCT_UserRegistration on c.createdUserId equals user.User_Id
join file in entityObject.NCT_FileUpload on c.iconfileId equals file.upld_ID
join templObj in entityObject.NCT_Templates on c.ID equals templObj.processId
where c.processid == "10"
select new processobject
{
id = c.ID,
code = c.code,
flochartContent = c.flowchartContent,
//arrayofTemplates array i want to return
}
);
public class processobject
{
public templatesObject[] arrayofTemplates { get; set; }
public int id { get; set; }
public string flochartContent { get; set; }
public string code { get; set; }
}
In der obigen Abfrage habe ich geschrieben, wo c.processid == "10"
. Also gibt es mehrere Datensätze in NCT_Templates
mit processid
10. Ich möchte Array mit all diesen Datensätzen zurückgeben. Ich habe Array wie folgt in meiner benutzerdefinierten Klasse erstellt. Ich habe diese Abfrage
processobject retObj = new processobject();
retObj = (from c in entityObject.NCT_Process
join user in entityObject.NCT_UserRegistration on c.createdUserId equals user.User_Id
join file in entityObject.NCT_FileUpload on c.iconfileId equals file.upld_ID
into filesObjFirst
from wt1 in filesObjFirst.DefaultIfEmpty()
join templObj in entityObject.NCT_Templates on c.ID equals templObj.processId
into filesObj
from wt in filesObj.DefaultIfEmpty()
where c.ID == dbObject.ID
select new processobject
{
id = c.ID,
code = c.code,
flochartContent = c.flowchartContent,
name = c.name,
parentId = c.parentId,
projectId = c.projectId,
objectives = c.objectives,
displayOrder = c.dispalyOrder,
iconFileId = c.iconfileId,
level = c.level,
iconFileobj = new iconFile
{
id = wt1.upld_ID,
name = wt1.fileName,
url = wt1.filePath
},
description = c.description,
startCriteria = c.startCriteria,
endCriteria = c.endCriteria,
reporting = c.reporting,
output = c.output,
kpi = c.kpi,
procedureHistory = c.procedureHistory,
role = c.role,
duration = c.duration,
owner = c.owner,
visibility = true,
createdUserId = c.createdUserId,
}).FirstOrDefault();
Ich habe diese eine weitere Abfrage
templatesObject[] templatesobject = (from c in entityObject.NCT_Templates
where c.processId == dbObject.ID
join file in entityObject.NCT_FileUpload on c.templateFileId equals file.upld_ID
into filesObjFirst
from wt1 in filesObjFirst.DefaultIfEmpty()
select new templatesObject
{
id = c.id,
title = c.title,
version = c.version,
visible = c.visibility,
filesObj = new iconFileTemplate()
{
id = wt1.upld_ID,
url = wt1.filePath,
name = wt1.fileName
}
}).ToArray();
Innen arrayofTemplates
I Aufzeichnungen NCT_Templates
speichern möchten. Jede Hilfe wäre willkommen. Vielen Dank.
Vielen Dank. Ich habe meine Frage bearbeitet. Ich weiß nicht, wie ich den Eigenschaften Werte zuweisen kann. Ich habe das Beispielobjekt oben veröffentlicht. –
@NiranjanGodbole aktualisiert :), denken Sie daran, wenn das Array mehr als einen Satz von Daten zurückgibt, müssen Sie ICollection wie oben verwenden – Valkyrie
Danke für Ihre Zeit. templateFileId wird in meinem Fall mehr als eine Zeile haben. Wie kann ich den Eigenschaften von templateFileId Werte zuweisen? Zum Beispiel habe ich geschrieben ID = c.id, title = c.title, version = c.version so wie dies kann ich Werte zu url zuweisen, Name usw. –