[英]Linq To SQL help on OR condition
我有兩個表:
公司
注意: AliasList
值由分號分隔
CompanyID | CompanyName | AliasList
-------------------------------------------------------
1 | Wal-mart | Walmart;Wal Mart;Samsclub
EMPL
EmplID | EmployerName
-------------------------------------------------------
1 | Walmart
我需要將EmployerName與CompanyName進行比較。 如果名稱匹配,則獲取一些值。 否則,將EmployerName與AliasList進行比較並獲取一些值。 我需要一些幫助,以Linq
或Linq To SQL
這項工作。 我嘗試的解決方案:
var allAliasListData = getting all the AliasList values into a List by using split() function.
var result = from e in Empl
from c in Company.Where(w => w.Company.Trim() == r.EmployerName.Trim() || allAliasListData.Contains(r.EmployerName.Trim())
首先,您需要為兩個表都生成List
。 然后,您可以使用Linq
獲得結果。 我在DotNetFiddle中創建了一個示例,下面的代碼示例。
碼:
using System;
using System.Linq;
using System.Collections.Generic;
public class Program
{
class Company
{
public string CompanyID { get; set; }
public string CompanyName { get; set; }
public string AliasList { get; set; }
}
class Empl
{
public string EmplID { get; set; }
public string EmployerName { get; set; }
}
public static void Main()
{
Case1();
Case2();
Case3();
}
static void Case1()
{
//CompanyName == EmployerName
List<Empl> listEmpl = new List<Empl>() { new Empl() { EmplID = "1", EmployerName = "Walmart" } };
List<Company> listCompany = new List<Company>() { new Company() { CompanyID = "1", CompanyName = "Walmart", AliasList = "Wal-mart;Wal Mart;Samsclub" } };
var result = from e in listEmpl
from c in listCompany.Where(w => w.CompanyName.Trim() == e.EmployerName.Trim() || w.AliasList.Split(';').Contains(e.EmployerName.Trim()))
select new { c.CompanyName, e.EmployerName };
if(result.FirstOrDefault() != null)
{
Console.WriteLine(result.FirstOrDefault().CompanyName);
}
else
{
Console.WriteLine("Result is empty!");
}
}
static void Case2()
{
//AliasList Contain EmployerName
List<Empl> listEmpl = new List<Empl>() { new Empl() { EmplID = "1", EmployerName = "Wal-mart" } };
List<Company> listCompany = new List<Company>() { new Company() { CompanyID = "1", CompanyName = "Walmart", AliasList = "Wal-mart;Wal Mart;Samsclub" } };
var result = from e in listEmpl
from c in listCompany.Where(w => w.CompanyName.Trim() == e.EmployerName.Trim() || w.AliasList.Split(';').Contains(e.EmployerName.Trim()))
select new { c.CompanyName, e.EmployerName };
if(result.FirstOrDefault() != null)
{
Console.WriteLine(result.FirstOrDefault().CompanyName);
}
else
{
Console.WriteLine("Result is empty!");
}
}
static void Case3()
{
//Not match any condition
List<Empl> listEmpl = new List<Empl>() { new Empl() { EmplID = "1", EmployerName = "Wal - mart" } };
List<Company> listCompany = new List<Company>() { new Company() { CompanyID = "1", CompanyName = "Walmart", AliasList = "Wal-mart;Wal Mart;Samsclub" } };
var result = from e in listEmpl
from c in listCompany.Where(w => w.CompanyName.Trim() == e.EmployerName.Trim() || w.AliasList.Split(';').Contains(e.EmployerName.Trim()))
select new { c.CompanyName, e.EmployerName };
if(result.FirstOrDefault() != null)
{
Console.WriteLine(result.FirstOrDefault().CompanyName);
}
else
{
Console.WriteLine("Result is empty!");
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.