我目前使用的是SharePoint 2010,在我的业务层我使用的是LINQ to SharePoint。我使用SPMetal生成了所有的实体类。
我们正在创建一个图书馆系统,我的系统有2个列表。第一个是贡献,第二个是贡献者。每个贡献者都包含对贡献列表的引用(PrimaryISBN引用)。贡献列表包含图书列表,主要isbn在此列表中不是唯一的。
ID PrimaryISBN TITLE
1 PRIM1 HardcoverLOTR
2 PRIM1 AudioBookLOTR
3 PRIM2 HardcoverHP
贡献ID Name PrimaryISBNLookup
1 ABC PRIM1
2 DEF PRIM2
我正在尝试获取基于名称的特定用户贡献的所有书籍。我的查询是这样的
var result = from _contributor in data.contributor
where _contributor.Name= "ABC"
select new Book
{
Title = contributor.PrimaryISBNLookup.Title
}
我目前面临的问题是检索具有相同ISBN但不同标题的记录(每种格式都有标题,即有声书将有标题,同一本书的精装书将有不同的标题)。这个查询只返回给我1条记录,即使我在我的系统中有2条记录,即具有ID(在贡献中)的记录,我在将记录插入贡献者列表时被迫插入。
非常感谢您的帮助
据我所知,您尝试实现一个简单的连接,如下所示:
var results = from _contributor in data.contributor
join _contribution in data.contribution
on _contributor.PrimaryISBNLookup equals _contribution.PrimaryISBN
where _contributor.Name == "ABC"
select new Book
{
Title = _contribution.Title
}
如果你想在SPList中使用DataTable,试试这个:
SPList cList = spWeb.Lists.TryGetList("Customer");
SPList oList = spWeb.Lists.TryGetList("Order");
DataTable cTable= cList.Items.GetDataTable();
DataTable oTable= oList.Items.GetDataTable();
var coList = from tbl1 in cTable.AsEnumerable()
join tbl2 in oTable.AsEnumerable() on tbl1["Title"] equals tbl2["CustomerName"]
select new
{
ItemName = tbl2["Title"],
CustomerName = tbl1["Title"],
Mobile = tbl1["MobileNo"]
};