sql是否通过引用与Linq合并? (除了和相交是否相同?)

问题描述 投票:0回答:1

当您在linq与sql中执行联合时,将通过引用进行引用-如果对对象的引用指向同一对象-还是通过id字段进行引用?

示例方法:

        public IEnumerable<CustomerModel> GetCustomers(string searchCriteria)
    {
        ExpressLogger.LogDebug("Enter"); 
        try
        {
            var datacontext = Helpers.Utils.GetCustomerRmhDataContext();
            using(datacontext)
            {
               var accountCustomers = datacontext.Customers.Where(c => 
                            c.AccountNumber.ToLower().Contains(searchCriteria.ToLower())).Select(c=>convertRmhToModel(c,datacontext)).ToList();

                var phoneCustomers = datacontext.Customers.Where(c =>
                            c.PhoneNumber.ToLower().Contains(searchCriteria.ToLower())).Select(c => convertRmhToModel(c, datacontext)).ToList();

                var personalNumberCustomers = datacontext.Customers.Where(c =>
                            c.TaxNumber.ToLower().Contains(searchCriteria.ToLower())).Select(c => convertRmhToModel(c, datacontext)).ToList();

                var emailCustomers = datacontext.Customers.Where(c =>
                            c.EmailAddress.ToLower().Contains(searchCriteria.ToLower())).Select(c => convertRmhToModel(c, datacontext)).ToList();


                var allCustomers = accountCustomers.Union(phoneCustomers).Union(personalNumberCustomers).Union(emailCustomers).ToList();


                return allCustomers;
            }
        }
        catch (Exception ex)
        {
            ExpressLogger.LogError(ex.Message);
            throw;
        }
    }

此功能可以执行我想要的操作,它会在客户中搜索帐号,电话,邮件和瑞典的个人号码。然后我进行合并并返回结果。但是即时消息-它是如何工作的,它将与ID字段比较并集还是通过引用比较它-将检查哈希码和相等比较器? (相交是否相同,除了?)

c# linq linq-to-sql union intersect
1个回答
0
投票

此时,在.Net集合上调用了.Union,其行为在Enumerable.Union的文档中定义:

© www.soinside.com 2019 - 2024. All rights reserved.