Как я могу сократить коды ниже, чем раньше? Мне нужен короткий и простой метод: Я не хочу использовать цикл foreach, потому что у меня есть одно значение.
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();
}
}
}
Как использовать строковое значение вместо "var DepartmanName"
Что-то вроде:
string name = (from d in staffContext.Departman
where d.ID == selectedDepartman
select d.Name).First();
или
string name = staffContext.Departman.Where(d=>d.ID == selectedDepartman)
.First().Name;
Это то, что вы пытаетесь сделать?
string name = (from d in staffContext.Departman
where d.ID == selectedDepartman
select d.Name).SingleOrDefault();
SingleOrDefault вернет имя или null, если отдел не выйдет.
Update:
Вы можете использовать "FirstOrDefault", который доступен в текущей структуре 3.5. Я думаю, что он, возможно, был включен с 3.0, но я не уверен. Я думаю, что он вернет null (в отличие от пустой строки), если элемент не найден.... но вы захотите дважды проверить это.
string name = (из d в staffContext.Departman где d.ID == selectedDepartman выберите d.Name).FirstOrDefault();