Quote:
i need this output using linq :
{Id=1, Name="Process 01", CostCenter="1,2,3,4" , companyID = 1 },
{Id=3, Name="Process 03", CostCenter="1,2,5" , companyID = 1 },
If
CostCenterId
is ordered list, you can try something like this:
void Main()
{
List<Process > process= new List<Process >()
{
new Process{Id=1, Name="Process 01", CostCenter="1,2,3,4" , companyID = 1 },
new Process{Id=2, Name="Process 02", CostCenter="1,4,10" , companyID = 1 },
new Process{Id=3, Name="Process 03", CostCenter="1,2,5" , companyID = 1 },
};
List<orderDetails> orderDetails= new List<orderDetails>()
{
new orderDetails{ Id=1, Name="order 01", CostCenterId ="1" , companyID = 1},
new orderDetails { Id=2, Name="order 02", CostCenterId="2" , companyID = 1},
};
var result = process
.Where(x=> x.CostCenter.Contains(string.Join(",", orderDetails.Select(o=> o.CostCenterId))))
.ToList();
foreach(var r in result)
Console.WriteLine($"Id={r.Id}\tName='{r.Name}'\tCostCenter='{r.CostCenter}'\tcompanyID={r.companyID}");
}
public class Process
{
public int Id;
public string Name;
public string CostCenter;
public int companyID;
}
public class orderDetails
{
public int Id;
public string Name;
public string CostCenterId;
public int companyID;
}
Result:
Id=1 Name='Process 01' CostCenter='1,2,3,4' companyID=1
Id=3 Name='Process 03' CostCenter='1,2,5' companyID=1