Используя запрос Linq, когда мы получаем запись по id, как я могу присвоить это значение другому столбцу? - PullRequest
0 голосов
/ 09 октября 2018

Здесь я написал простой where условие linq запроса. Я получаю данные из базы данных, но я хочу присвоить эти данные другому столбцу.

Сотрудник

public class Employee
{
        public string Id{ get; set; }
        public string Name{ get; set; }
        public string Email{ get; set; }
}

Запрос Linq:

public Employee GetEnqDetails(int EnqId)
{
    if (EnqId != null)
    {
        var x = from n in db.Employee 
                where n.Id == EnqId
                select n;
        return x.FirstOrDefault();
    }
    else
    {
        return null;
    }
}

Здесь из таблицы Employee любые данные, которые я получаю, я хочу присвоить эти данные другому классу как

public class EmailContent
{
        public string Subject { get; set; }
        public string Body { get; set; }
}

Здесь тема= x.Name + "" x.Email Как мне присвоить это значение

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Прежде всего ваш параметр метода GetEnqDetails должен string, потому что ваш класс Id в Employee имеет тип данных string.

А затем вам необходимо спроецировать результат запроса на вашEmailContent класс как

public EmailContent GetEnqDetails(string EnqId)
{
    if (!string.IsNullOrEmpty(EnqId))
    {
        var x = from n in db.Employee
                        where n.Id == EnqId
                        select new EmailContent { Subject = n.Name + " " + n.Email, Body = "get any property by typing n." };
        return x.FirstOrDefault();
    }
    else
    {
        return null;
    }
}
0 голосов
/ 09 октября 2018

Таким образом, вы получаете сведения о сотруднике из метода GetEnqDetails(), вы можете создать новый экземпляр EmailContent с этими данными:

var employ = GetEnqDetails(101);
if (employ != null)
{
    EmailContent emc = new EmailContent() { Subject = String.Format("{0} {1}", employ.Name, employ.Email), Body = "" }; 
    // proceed with emc 
}

Если вы не хотите использовать отфильтрованныйСведения о сотруднике, требуется только создать экземпляр EmailContent с данными сотрудника, что означает, что вы можете изменить метод следующим образом:

public static EmailContent GetEnqDetails(string EnqId)
{
    if (EnqId != null)
    {
        return db.Employee.Where(n => n.Id == EnqId)
                          .Select(x => new EmailContent()
                          {
                              Subject = String.Format("{0} {1}",
                              x.Name, x.Email),
                              Body = ""
                          }).FirstOrDefault();
    }
    else
    {
        return null;
    }
}

Обновление согласно комментарию:

Естьнесоответствие DataType, как указано в комментарии, то есть EnqId - это int, а n.Id - это строка.Пожалуйста, исправьте их соответственно.Я просто изменил параметр как строку в моем коде.Поскольку сравнение (if (EnqId != null)) означает меньшее значение, это целое число.Так что если вы пересылаете с int, снимите условие

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