Здесь я написал простой, 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; }
}
Здесь subject = x.Name + "" x.Email Как я могу присвоить это значение
Таким образом, вы получаете данные Employee из метода 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
экземпляра EmailContent
с 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
удалите условие
EnqId
- это int, а n.Id
- это строка. здесь вы получили ошибку времени компиляции
Прежде всего, ваш метод метода GetEnqDetails
должен GetEnqDetails
string
потому что ваш класс Id
in Employee
имеет string
DataType.
И тогда вы должны проецировать свой результат запроса в свой класс 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;
}
}
body = x.?
var first = x.FirstOrDefault();
теперь создайтеEmailContent
из этогоvar ec = new EmailContent(); ec.Subject= first.Name ...