Рейтинг:
8
MadMyche
Я не претендую на то, чтобы быть адептом LINQ, но действительно дал ему шанс с этим доказательством концепции, и он работает так, как я хотел бы.
Это не 100% решение для вас, как есть, но должно быть хорошей базой для работы.
namespace ProofOfConcept {
public class Employee {
public int EmpCode { get; set; }
public string EmpName { get; set; }
public Employee() { }
public Employee(int Code, string Name) {
EmpCode = Code;
EmpName = Name;
}
}
class Program {
static void Main(string[] args) {
List<Employee> srsEmps = new List<Employee>();
srsEmps.Add(new Employee(1, "Me"));
srsEmps.Add(new Employee(2, "You"));
List<Employee> destEmps = new List<Employee>();
destEmps.Add(new Employee(2, "You"));
destEmps.Add(new Employee(3, "Someone Else"));
var Deleted =
from s in srsEmps
where !(from d in destEmps select d.EmpCode).Contains(s.EmpCode)
select s;
var Common =
from s in srsEmps
where (from d in destEmps select d.EmpCode).Contains(s.EmpCode)
select s;
var NewlyAdded =
from d in destEmps
where !(from s in srsEmps select s.EmpCode).Contains(d.EmpCode)
select d;
foreach (Employee d in Deleted) {
Console.WriteLine("Deleted = " + d.EmpName);
}
foreach (Employee c in Common) {
Console.WriteLine("Common = " + c.EmpName);
}
foreach (Employee n in NewlyAdded) {
Console.WriteLine("New = " + n.EmpName);
}
Console.WriteLine("Press any key to continue");
Console.ReadLine();
}
}
}
Member 13168476
это работает ! Спасибо
так что если у меня есть в моем контроллере
ViewBag.common = общий;
ViewBag.deleted = удален;
Видовой мешок.newlyAdded = NewlyAdded;
и на мой взгляд покажите результат в таблице вот так
@HTML-код.DisplayNameFor(модель =&ГТ; модель.Название)
@по каждому элементу (ВАР продукт в ViewBag.общие)
{
}
@HTML-код.DisplayNameFor(модель =&ГТ; модель.Название)
@Html.DisplayFor(modelItem =>item)
Как я могу показать сотруднику только имя, а не все его данные? потому что элемент не имеет никакого свойства для выбора
MadMyche
Возможно, вам придется сделать приведение/преобразование, чтобы иметь правильный набор объектов, а затем вы можете просто использовать @Html.DisplayFor(model => model.Name).
Я сам, вероятно, создал бы "модель сравнения сотрудников", которая имела бы 3 отдельных списка в качестве свойств, и передал бы эту модель в представление. Облегчать
Member 13168476
извините, но если я хочу знать, обновляется ли какой-либо сотрудник и какие поля отличаются
как я пишу запрос ?
ВАР обновление = ....
MadMyche
Не зная, какие поля находятся в базе данных и классе, я не смогу помочь вам найти обновленную информацию
Member 13168476
публичный класс srsEmployee
{
public int Id { get; set; }
public string Name { get; set; }
публичная строка EmpCode { get; set; }
public Nullable<decimal> зарплата { get; set; }
общественного значения null&ЛТ;система.датавремя&ГТ; начальная дата { получить; набор; }
общественного значения null&ЛТ;система.датавремя&ГТ; БПК { получить; набор; }
public int DepartmentId { get; set; }
public bool Active { get; set; }
публичный виртуальный srsDepartment srsDepartment { get; set; }
}
публичный класс destEmployee
{
public int Id { get; set; }
public string Name { get; set; }
публичная строка EmpCode { get; set; }
public Nullable<decimal> зарплата { get; set; }
общественного значения null&ЛТ;система.датавремя&ГТ; начальная дата { получить; набор; }
общественного значения null&ЛТ;система.датавремя&ГТ; БПК { получить; набор; }
public int DepartmentId { get; set; }
public bool Active { get; set; }
публичный виртуальный destDepartment destDepartment { get; set; }
}