c# - 不同类中的相同变量名,但一个可以为空

标签 c# .net entity-framework linq nullable

我有以下具有相同变量的类,但其中一个可以为空,另一个不能为空,因为它是该表中的主键:

[DataServiceKey("OrderID")]
public class Order
{
    public int OrderID { get; set; }
    public int? EmployeeID { get; set; }
    // ...other properties...
    // ...

    public Employee Employees { get; set; }
}
[DataServiceKey("EmployeeID")]
public class Employee
{
    public int EmployeeID { get; set; }
    // ...other properties...
    // ...

    public IEnumerable<Order> Orders { get; set; }
}

这两个类之间的一般思想是一个订单可以属于 1 个员工,但也可能存在一个尚未分配给任何员工的订单,一个员工必须至少有 1 个订单或超过 1 个。现在我我正在尝试在 Order 类和 Employee 类之间创建关联,我就是这样做的:

        // Create an association between Orders and Employees
        var _es = _Employees.ToDictionary(e => e.EmployeeID);
        var _os = _Orders.ToLookup(o => o.EmployeeID);
        foreach (var o in _Orders) o.Employees = _es[o.EmployeeID];
        foreach (var e in _Employees) e.Orders = _os[e.EmployeeID];

我得到了 cannot convert from "int?"_es[o.EmployeeID] 中的“int” 错误,我已经尝试了 here 中提供的所有解决方案,但它们都不适合我……我也尝试过使用 _es[o.EmployeeID.Value],它确实解决了错误,但这次它给了我 System.运行时出现 InvalidOperationException 错误。是否有任何可能的解决方案适用于我的问题?

最佳答案

您传递的是 int?用于字典的键,其中 int是需要的。

o.Employee是一个 int? .

esDictionary<int, Employee> .

你可能想要:

o.Employees = o.EmployeeID != null ? _es[o.EmployeeID] : null;

关于c# - 不同类中的相同变量名,但一个可以为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39404091/

相关文章:

c# - 如何等待 Func<Task<string>>?

entity-framework - 为什么 DbSet<TEntity> 不实现 EnumerableAsync

c# - 动态范围日期数据注释验证属性 c#

javascript - JQuery 和选择行/鼠标悬停

c# - 重定向到当前友好的 URL(有或没有 url 变量)

.net - 处理具有多个版本的软件的发布管理的最佳方法是什么?

c# - 当我们创建并启动一个新的 .NET 线程时,它会创建一个新的操作系统级线程吗?

c# - 疯狂 VS 设计器错误

c# - 基于类的隐式接口(interface)

c# - 使用 EnvDTE 自动化 Visual Studio