LINQ能否直接类型转换
以下问题,下述写法需要建立一个lll序列逐步便利,能否让
var NewList = from p in BigList select new Small { id = p.id };直接转换为List<int>
即:List<int> NewList = from p in BigList select new { id = p.id };,但是这么写不好用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Web
{
     class Article
     {
         public int? id;
         public string nr;
     }
     public partial class Test : System.Web.UI.Page
     {
         protected void Page_Load(object sender, EventArgs e)
         {
             if (!IsPostBack)
             {
                 List<Article> ArticleList = new List<Article>();
                 ArticleList.Add(new Article { id = 1, nr = "11" });
                 ArticleList.Add(new Article { id = 2, nr = "22" });
                 ArticleList.Add(new Article { id = 3, nr = "33" });
                 ArticleList.Add(new Article { id = 4, nr = "44" });
                 ArticleList.Add(new Article { id = 5, nr = "55" });
                 //NewList是对ArticleList的加工
                 var NewList = from p in ArticleList where p.id<=3 select new { id = p.id };    
                 List<int> lll = new List<int>();
                 foreach (var p in NewList)
                 {
                     lll.Add(Convert.ToInt32(p.id));
                 }
                 //问题:上述写法需要建立一个lll序列逐步便利,能否让
                 //var NewList = from p in BigList select new Small { id = p.id };直接转换为List<int>
                 //即:List<int> NewList = from p in BigList select new { id = p.id };,但是这么写不好用
             }
         }
     }
}
------解决方案--------------------
List<int> lll = NewList.Select(p => p.id).ToList();
------解决方案--------------------
List<int> lll = NewList.Select(p => p.id).Where(p => p.HasValue).Select(p=>p.Value).ToList();
------解决方案--------------------List<int> lll = NewList.Select(p => (int)p.id).ToList();
------解决方案--------------------直接类型转换
List<int> list= NewList.Select(p => Convert.ToInt32(p.id)).ToList();