在我的应用程序中,我需要从2个SharePoint列表(ListA和ListB)中获取项目作为listitem集合,然后如果ListB中的项目匹配,我需要显示ListA中的项目(ListA.empid == ListB.empid )。
var iPs = AListItem.AsEnumerable()
.Select(r => r.FieldValues["EmpID"])
.Union(BListItem.AsEnumerable()
.Select(r => r.FieldValues["EmpID"]));
if (iPs.Count() > 0)
{
List<ListItem> sample = (from row in AListItem.AsEnumerable()
join id in iPs
on row.FieldValues["EmpID"] equals id
select row).ToList();
}
但我需要结果数据表才能绑定到转发器控件。如何将List<ListItem>
转换为数据表?
答案 0 :(得分:1)
正如我的评论中所述,使用sample
作为Repeater
控件的数据源。
此SO链接提供了有关如何实现此目的的详细信息:
binding-a-generic-list-to-a-repeater-asp-net
概述如下:
// Here's your object that you'll create a list of
private class Products
{
public string ProductName { get; set; }
public string ProductDescription { get; set; }
public string ProductPrice { get; set; }
}
// Here you pass in the List of Products
private void BindItemsInCart(List<Products> ListOfSelectedProducts)
{
// The the LIST as the DataSource
this.rptItemsInCart.DataSource = ListOfSelectedProducts;
// Then bind the repeater
// The public properties become the columns of your repeater
this.rptItemsInCart.DataBind();
}
ASPX代码:
<asp:Repeater ID="rptItemsInCart" runat="server">
<HeaderTemplate>
<table>
<thead>
<tr>
<th>Product Name</th>
<th>Product Description</th>
<th>Product Price</th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("ProductName") %></td>
<td><%# Eval("ProductDescription")%></td>
<td><%# Eval("ProductPrice")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
</FooterTemplate>
</asp:Repeater>
答案 1 :(得分:0)
我同意Ric:也许绑定List更好。
但是如果你真的需要转换为数据表,请检查以下链接:
How to convert a List into DataTable
http://www.c-sharpcorner.com/UploadFile/1a81c5/list-to-datatable-converter-using-C-Sharp/