Ändern Linq-Abfrage, wie?
-
06-07-2019 - |
Frage
Wie kann ich unter Codes kürzer als früher? Ich brauche kurze und einfache Methode: Ich möchte nicht foreach-Schleife verwenden, weil ich einen Wert haben.
public partial class Test : System.Web.UI.Page
{
StaffManagementEntities staffContext;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadStaffPersonel();
}
}
void LoadStaffPersonel()
{
int selectedDepartman = Convert.ToInt32(Request.QueryString["SelectedDepartmanID"]);
string name="";
using (staffContext = new StaffManagementEntities())
{
var DepartmanName = from d in staffContext.Departman
where d.ID == selectedDepartman
select d;
foreach (Departman d in DepartmanName)
{
name = d.Name;
}
ObjectResult<StaffsPersonel> personalData = staffContext.GetPersonelData(name);
gvPersonel.DataSource = personalData;
gvPersonel.DataBind();
}
}
}
Wie String-Wert anstelle von "var DepartmanName"
verwenden,Lösung
So etwas wie:
string name = (from d in staffContext.Departman
where d.ID == selectedDepartman
select d.Name).First();
oder:
string name = staffContext.Departman.Where(d=>d.ID == selectedDepartman)
.First().Name;
Andere Tipps
Ist das, was Sie zu tun versuchen?
string name = (from d in staffContext.Departman
where d.ID == selectedDepartman
select d.Name).SingleOrDefault();
Die SingleOrDefault wird der Name oder null zurück, wenn die Abteilung nicht beendet.
Update:
- Scheint, wie Sie im Moment braucht, kommentierte die Erste Methode als ykaratoprak zu verwenden. Aber nach dieser Beitrag die Single / SingleOrDefault wird in Entity Framework 4.0 hinzugefügt werden.
Sie können „FirstOrDefault“ benutzen, die in dem aktuellen 3.5 Framework zur Verfügung steht. Ich denke, es ist mit 3.0 enthalten sein können, aber ich bin nicht sicher. Ich denke, es wird null zurück (im Gegensatz zu einem leeren String im Gegensatz), wenn das Element nicht gefunden wird .... aber Sie werden feststellen, dass verdoppeln wollen überprüfen.
string name = (von d in staffContext.Departman wo d.ID == selectedDepartman wählen d.Name) .FirstOrDefault ();