C# 如何检查我的应用程序中的另一个表中是否存在数组值?
我有以下课程:-C# 如何检查我的应用程序中的另一个表中是否存在数组值?,c#,asp.net,asp.net-mvc,linq,entity-framework,C#,Asp.net,Asp.net Mvc,Linq,Entity Framework,我有以下课程:- public class ContactsDetails { public IEnumerable<AaaUserContactInfo> Info { get; set; } } 现在,我有以下类初始化新的ContactDetails对象:- public ActionResult CustomersDetails(long[] OrganizationIds) { if (OrganizationIds == null
public class ContactsDetails
{
public IEnumerable<AaaUserContactInfo> Info { get; set; }
}
现在,我有以下类初始化新的ContactDetails对象:-
public ActionResult CustomersDetails(long[] OrganizationIds)
{
if (OrganizationIds == null)
{
return RedirectToAction("customer", new { isError = true });
}
else
{
var ContactsDetails = new ContactsDetails
{
Info = r.getcontactinfo(OrganizationIds)
};
}
return View();
}
现在我需要返回所有AaaUserContactInfo对象,这些对象的电子邮件ID包含组织名称的一部分,类似于:-
public IEnumerable<AaaUserContactInfo> getcontactinfo(long[] Organizationid)
{
var result = ((from uci in entities.AaaUserContactInfoes
join ci in entities.AaaContactInfoes on uci.CONTACTINFO_ID equals ci.CONTACTINFO_ID
where ci.EMAILID.ToString() == // contains any organization name in their emailIds ,, where i can get the organization name using sonthing similar to var orgname = entities.SDOrganizations.Where(a => a.ORG_ID == OrganizationIds[i]).FirstOrDefault().NAME;
select uci)) ;
return result;
}
public IEnumerable getcontactinfo(长[]组织ID)
{
var结果=((来自entities.AaaUserContactInfoes中的uci)
在uci上的entities.aaAcontractInfo中加入ci。CONTACTINFO\u ID等于ci.CONTACTINFO\u ID
其中ci.EMAILID.ToString()=//在其电子邮件ID中包含任何组织名称,我可以使用类似于var orgname=entities.SDOrganizations的sonthing获取组织名称。其中(a=>a.ORG\u ID==OrganizationIds[i])。FirstOrDefault().name;
选择uci);
返回结果;
}
您可以尝试使用下一个查询吗?如果示例中的FirstOrDefault()
返回null,我不知道您要做什么。在我的情况下,不会抛出异常,但不会返回记录。请注意实施的细节,以及它是否有效
public IEnumerable<AaaUserContactInfo> getcontactinfo(long[] organizationIds)
{
var organizationNames = entities.SDOrganizations
.Where(org => organizationIds.Contains(org.ORG_ID))
.Select(org=> org.Name);
var result = from userContactInfo in entities.AaaUserContactInfoes
join contactInfo in entities.AaaContactInfoes on userContactInfo.CONTACTINFO_ID equals contactInfo.CONTACTINFO_ID
//check if EMAILID string has at least one organizationName as substring
where organizationNames.Any(orgName => contactInfo.EMAILID.ToString().Contains(orgName))
select userContactInfo;
return result;
}
public IEnumerable getcontactinfo(长[]个组织ID)
{
var organizationNames=entities.SDOrganizations
.Where(org=>organizationIds.Contains(org.org\u ID))
.Select(org=>org.Name);
var result=来自entities.AaaUserContactInfoes中的userContactInfo
在实体中加入contactInfo.aaa用户contactInfo上的contactInfo.contactInfo\u ID等于contactInfo.contactInfo\u ID
//检查EMAILID字符串是否至少有一个organizationName作为子字符串
其中organizationNames.Any(orgName=>contactInfo.EMAILID.ToString().Contains(orgName))
选择userContactInfo;
返回结果;
}
编辑:更新了一个答案,以处理根据Organizationid
选择的许多组织。然后,实体。如果EMAILID
包含在至少一个ogranization的名称字段中,则会选择aa策略信息
注意:我重命名了一些仅在方法作用域中使用的参数,只是为了使代码更可读。什么是
SelectRight[i]
?您是否需要查找关联的组织,然后查看EMAILID
是否至少包含一个关联组织的名称?抱歉,SelectRight应该是OrganizationID,我已更新了代码。我需要返回所有具有包含组织名称的emailId的对象。在这里,我需要获取在传递的数组中具有组织ID的所有组织名称。。thnaksthanks感谢您的回复,但您假设我只有一个组织名称,但在我的情况下,是Organizationid[]数组将具有与数组中的每个id关联的organizatin名称。您希望ci.EMAILID
至少等于其中一个名称吗?如果电子邮件包含任何组织名称的一部分,例如@organizationname…是的,那么您的意思是电子邮件字符串应至少包含一个域名?我会更新答案
public IEnumerable<AaaUserContactInfo> getcontactinfo(long[] organizationIds)
{
var organizationNames = entities.SDOrganizations
.Where(org => organizationIds.Contains(org.ORG_ID))
.Select(org=> org.Name);
var result = from userContactInfo in entities.AaaUserContactInfoes
join contactInfo in entities.AaaContactInfoes on userContactInfo.CONTACTINFO_ID equals contactInfo.CONTACTINFO_ID
//check if EMAILID string has at least one organizationName as substring
where organizationNames.Any(orgName => contactInfo.EMAILID.ToString().Contains(orgName))
select userContactInfo;
return result;
}