我将使用LINQ访问SharePoint列表并加载到网格。我在共享点网站上有员工和项目列表。
我找到了一些代码here
private void BindGrid()
{
SPLinqDataContext dc = new SPLinqDataContext(SPContext.Current.Web.Url);
EntityList<EmployeesItem> Employees = dc.GetList<EmployeesItem>("Employees");
var EmployeeQuery = from e in Employees.ToList()
select new
{
e.Title,
e.FirstName,
Position = e.Position.Title,
PositionDescription = e.Position.Description,
Department = e.Position.Department.Title
};
GridView1.DataSource = EmployeeQuery;
GridView1.DataBind();
}
我的问题是关于<EmployeesItem>
。这是继承我的参考吗?或者我应该像往常一样在.net中创建一个单独的类?
注意 - 我的意思是参考:
我们应该生成LINQ to SharePoint代理代码以使用LINQ。
spmetal.exe /web:http://localhost/sites/MySampleWebSite /namespace:AccessSPDatawithLINQ.VisualWebPart1 /code:SPLinq.cs
答案 0 :(得分:1)
据我所知
第1点:您将执行LINQ查询,您将从内存中的sharepoint读取完整的SPList Employees
到List<EmployeesItem>
。 现在我不知道您是否修改了这些EmployeesItem
,这会反映在您的SP列表中吗?你可以自己测试一下。
第2点:您在此处创建Anonymous类型。如果修改此对象,则不会修改EmployeesItem
对象。
第3点:这里有内存查询,其中包含IEnumerable
匿名类型。除非您评估此IEnumerable
(通过执行.ToList()
),否则您的EmployeeQuery
将无法执行。截至目前,根据您的代码,当您.DataBind()
时;您的EmployeeQuery
将会执行。
private void BindGrid()
{
SPLinqDataContext dc = new SPLinqDataContext(SPContext.Current.Web.Url);
EntityList<EmployeesItem> Employees = dc.GetList<EmployeesItem>("Employees");
var EmployeeQuery = from e in Employees.ToList() //Point 1
select new //Point 2
{
Title = e.Title,
FirstName = e.FirstName,
Position = e.Position.Title,
PositionDescription = e.Position.Description,
Department = e.Position.Department.Title
};
GridView1.DataSource = EmployeeQuery; //Point 3
GridView1.DataBind();
}
希望这有帮助。