如果项目有子项,则返回带有标志的集合

时间:2014-11-09 04:42:38

标签: entity-framework

我正在尝试返回一个客户的集合,这有效,但我想让我的调用高效,这样每个带回来的记录都应该有一个布尔返回来查看该客户是否有孩子(地址)。

最有效的电话会给我所有的客户回复,包括每个客户的标志,以确定是否有儿童

下面是我目前只检索客户的代码(客户和地址之间的关系是通过地址表上的customerID)

使用实体框架6.1

  public static List<Customer> GetCustomers()
    {
        try
        {
            using (var context = new MyContext())
            {
                return (from c in context.Customers
                        select c).ToList();
            }
        }
        catch (Exception ex)
        {
            throw new CustomerException(MethodBase.GetCurrentMethod().Name, ex);
        }
    }

2 个答案:

答案 0 :(得分:0)

我也许会这样做。

public class CustomerDto
{
    public string Name { get; set; }

    public int AddressCount { get; set; }
}

var result = from w in context.Customers select new { Name = w.Name, AddressCount = w.Addresses.Count };

        var ret = new List<CustomerDto>();

        foreach (var customer in result)
        {
            var newCustomerDto = new CustomerDto();
            newCustomerDto.Name = customer.Name;
            newCustomerDto.AddressCount = customer.AddressCount;
        }

return ret;

这是一个简单的例子,应该作为您的起点。 我没有打开VS,所以只需查看代码,但对我来说看起来不错。我忘了提到如果它只是你所追求的旗帜,而不是.Count你可以使用.Any

答案 1 :(得分:0)

使用此代码

public static List<Customer> GetCustomers()
{
    try
    {
        using (var context = new MyContext())
        {
            return (from c in context.Customers
                    where c.Address.Any()
                    select c).ToList();
        }
    }
    catch (Exception ex)
    {
        throw new CustomerException(MethodBase.GetCurrentMethod().Name, ex);
    }
}