ActiveRecord三角关系如何写?

chybaby 2011-12-19 01:06:45
class A : ActiveRecordBase
{
public int AID { get; set; }
public int ANAME { get; set; }
}

class B : ActiveRecordBase
{
public int AID { get; set; }
public int BID { get; set; }
public int BNAME { get; set; }
}

class C : ActiveRecordBase
{
public int AID { get; set; }
public int CID { get; set; }
public int CNAME { get; set; }
}

A->B,A->C全是一对多的关系。
条件:如果满足BID=3(某一指定的值)或者CID=5的所有A数据如何来写。
...全文
91 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
MJ_dangerous 2011-12-19
  • 打赏
  • 举报
回复

private void button1_Click(object sender, EventArgs e)
{
A a1 = new A();
A a2 = new A();
B b1 = new B();
B b2 = new B();
B b3 = new B();
B b4 = new B();
C c1 = new C();
C c2 = new C();
C c3 = new C();
C c4 = new C();

a1.AID = 1;
a1.ANAME = 1;

a2.AID = 2;
a2.AID = 2;

b1.AID = 1;
b1.BID = 1;
b1.BNAME = 1;

b2.AID = 1;
b2.BID = 2;
b2.BNAME = 2;

b3.AID = 2;
b3.BID = 3;
b3.BNAME = 3;

b4.AID = 2;
b4.BID = 4;
b4.BNAME = 4;


c1.AID = 1;
c1.CID = 1;
c1.CNAME = 1;

c2.AID = 1;
c2.CID = 2;
c2.CNAME = 2;

c3.AID = 2;
c3.CID = 3;
c3.CNAME = 3;

c4.AID = 2;
c4.CID = 4;
c4.CNAME = 4;

Manager manager = new Manager();
manager.InsertA(ref a1);
manager.InsertA(ref a2);

manager.InsertB(ref b1);
manager.InsertB(ref b2);
manager.InsertB(ref b3);
manager.InsertB(ref b4);

manager.InsertC(ref c1);
manager.InsertC(ref c2);
manager.InsertC(ref c3);
manager.InsertC(ref c4);

List<A> listA = manager.GetByBID(1);
foreach(A a in listA)
{
MessageBox.Show(a.AID.ToString());
}

}

}
}
class ActiveRecordBase
{

}

class A : ActiveRecordBase
{
public int AID { get; set; }
public int ANAME { get; set; }
}

class B : ActiveRecordBase
{
public int AID { get; set; }
public int BID { get; set; }
public int BNAME { get; set; }
}

class C : ActiveRecordBase
{
public int AID { get; set; }
public int CID { get; set; }
public int CNAME { get; set; }
}

class Manager
{
private List<A> listA = null;
private List<B> listB = null;
private List<C> listC = null;

public Manager()
{
listA = new List<A>();
listB = new List<B>();
listC = new List<C>();
}

~Manager()
{
listA.Clear();
listB.Clear();
listC.Clear();
}

public void InsertA(ref A a)
{
listA.Add(a);
}

public void InsertB(ref B b)
{
listB.Add(b);
}

public void InsertC(ref C c)
{
listC.Add(c);
}

public List<A> GetByBID(int ID)
{
var listAnonymousTypes = (from ba in
(from b in listB
where b.BID == ID
select b.AID).ToList()
from a in listA
where a.AID == ba
select a).ToList();

return listAnonymousTypes;
}
}
熙风 2011-12-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sandy945 的回复:]
List<A>.Where(a=>List<C>.Where(c=>c.CID==5).Contains(a.AID))
[/Quote]

+1
阿非 2011-12-19
  • 打赏
  • 举报
回复
List<A>.Where(a=>List<C>.Where(c=>c.CID==5).Contains(a.AID))

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧