C# linq中的内部连接到实体
我有一个名为Customer的实体,它有三个属性:C# linq中的内部连接到实体,c#,.net,linq-to-entities,C#,.net,Linq To Entities,我有一个名为Customer的实体,它有三个属性: public class Customer { public virtual Guid CompanyId; public virtual long Id; public virtual string Name; } public class Splitting { public virtual long CustomerId; public virtual long Id; public vi
public class Customer {
public virtual Guid CompanyId;
public virtual long Id;
public virtual string Name;
}
public class Splitting {
public virtual long CustomerId;
public virtual long Id;
public virtual string Name;
}
我还有一个名为Spliting的实体,它有三个属性:
public class Customer {
public virtual Guid CompanyId;
public virtual long Id;
public virtual string Name;
}
public class Splitting {
public virtual long CustomerId;
public virtual long Id;
public virtual string Name;
}
现在我需要编写一个获取companyId和customerId的方法。该方法应返回与companyId中特定customerId相关的拆分列表。
大概是这样的:
public IList<Splitting> get(Guid companyId, long customrId) {
var res=from s in Splitting
from c in Customer
...... how to continue?
return res.ToList();
}
public IList get(Guid companyId,long customrId){
var res=从s开始拆分
从c到客户
……如何继续?
return res.ToList();
}
使用扩展方法:
var res = Splitting.Join(Customer,
s => s.CustomerId,
c => c.Id,
(s, c) => new { s, c })
.Where(sc => sc.c.Id == userId && sc.c.CompanyId == companId)
.Select(sc => sc.s);
不能100%确定这两个实体之间的关系,但以下是:
IList<Splitting> res = (from s in [data source]
where s.Customer.CompanyID == [companyID] &&
s.CustomerID == [customerID]
select s).ToList();
IList<Splitting> res = [data source].Splittings.Where(
x => x.Customer.CompanyID == [companyID] &&
x.CustomerID == [customerID]).ToList();
IList res=(来自[数据源]中的s)
其中s.Customer.CompanyID==[CompanyID]&&
s、 CustomerID==[CustomerID]
选择s.ToList();
IList res=[数据源].Splittings.Where(
x=>x.Customer.CompanyID==[CompanyID]&&
x、 CustomerID==[CustomerID]).ToList();
您可以在visual studio中找到大量Linq示例。
只需选择Help->Samples
,然后解压缩Linq示例
打开linq样本解决方案并打开SampleQueries项目的LinqSamples.cs
您正在寻找的答案在方法Linq14中:
int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
int[] numbersB = { 1, 3, 5, 7, 8 };
var pairs =
from a in numbersA
from b in numbersB
where a < b
select new {a, b};
int[]numbersA={0,2,4,5,6,8,9};
int[]numbersB={1,3,5,7,8};
变量对=
从一个数字
从数字b中的b开始
其中a
公共IList get(Guid companyId,long customrId){
var res=来自客户数据源中的c
其中c.CustomerId=customrId&&c.CompanyID==CompanyID
从拆分数据块中的s
其中s.CustomerID=c.CustomerID
选择s;
return res.ToList();
}
您已将客户实体粘贴两次,以代替拆分。。请解决为什么你需要公司ID的方法得到。。。拆分具有客户ID,可用于根据传递的客户进行选择ID@Ankur:为了提高安全性,业务层公开的每个方法都需要companyId,以便仅验证其对其实体的影响。有关更完整的示例,请参考是否有一种方法将其编写为lambda查询?如果您是指linq扩展方法(Select
,Join
…查看我的编辑),我从来不知道如何在VS+1中直接获取示例