[英]Convert field from a Listitem to a List<T> using LINQ
我正在使用CAML查询Sharepoint Online数据库,并获取它返回的必需ListItemCollection。 我只对此ListItemCollection的一个字段感兴趣,并将其转换为List <T>以供其他功能使用。 有没有办法使用LINQ和lambda函数来做到这一点?
我的当前代码运行正常,如下所示(listItems是Sharepoint Client Namespace中的ListItemCollection类型)。
List<string> theList = new List<string>();
foreach(ListItem itm in listItems) //listItems is type ListItemCollection
{
theList.Add(itm["Email_x0020_Address"].ToString());
}
看起来应该像
theList = listItems.ToList<string>( i => i["Email_x0020_Address"].ToString() );
要么
theList = listItems.Cast<ListItem>().ToList<string>(i =>
i["Email_x0020_Address"].ToString());
但是我在转换时遇到了麻烦。 任何帮助,将不胜感激! 谢谢!
使用“ Select
将序列中的每个项目投影到另一个序列中(然后可以将其添加到列表中):
var emails = items.Select(item => (string)item["Email_x0020_Address"])
.ToList();
谢谢您Servy的回答。...它应该可以正常工作,但是会返回“不支持该方法”错误。 经过更多研究后,微软论坛上还有一个答案……我想它必须先成为IEnumerable,然后才是列表?
List<string> theList =
(listItems.ToList().Select(item=>(string)item["Email_x0020_Address"]) as
IEnumerable<string>).ToList();
或像这样...
List<string> theList = listItems.AsEnumerable().Select(item =>
(string)item["Email_x0020_Address"]).ToList();
请试试
var emails = (from ListItem listItem in items.ToList()
select new Customer
{
EmailAddress = listItem["Email_x0020_Address"] != null ?
listItem["Email_x0020_Address"].ToString() : string.Empty
}).ToList();
要么
List<Customer> lstCustomerEmails =
(from ListItem listItem in items.ToList()
select new Customer
{
EmailAddress = listItem["Email_x0020_Address"] != null ?
listItem["Email_x0020_Address"].ToString() : string.Empty
}).ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.