Изменить запрос linq как? - PullRequest
2 голосов
/ 21 июня 2009

Как я могу короче ниже кодов, чем раньше? мне нужен короткий и простой метод: я не хочу использовать цикл 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"

Ответы [ 3 ]

3 голосов
/ 21 июня 2009

Что-то вроде:

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;
1 голос
/ 21 июня 2009

Это то, что вы пытаетесь сделать?

string name = (from d in staffContext.Departman
                                where d.ID == selectedDepartman
                                select d.Name).SingleOrDefault();

SingleOrDefault вернет имя или ноль, если отдел не выйдет.

Обновление:

  • Похоже, что на данный момент вам нужно использовать Первый метод, как прокомментировал ykaratoprak Но согласно этой записи Single / SingleOrDefault будет добавлен в Entity Framework 4.0.
0 голосов
/ 21 июня 2009

Вы можете использовать «FirstOrDefault», который доступен в текущей версии 3.5. Я думаю, что он мог быть включен с 3.0, но я не уверен. Я думаю, что он вернет ноль (в отличие от пустой строки), если элемент не найден .... но вы должны проверить это дважды.

имя строки = (из d в staffContext.Departman где d.ID == selectedDepartman выберите d.Name) .FirstOrDefault ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...