繁体   English   中英

将字段从列表项转换为列表 <T> 使用LINQ

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM