如何索引IQueryable?
我正在使用LINQ to sql查询从特定列获取值。查询如下,
var intitalQuery = (from a in sql.GetTable<Staff_Time_TBL>()
where a.Info_Data == SelectedOption
select a.Staff_No).Distinct();
从那里我希望能够索引intitalQuery
变量并根据需要获取值。
然后在另一个查询中使用该值。
我的第一次尝试就是这个,
Column1.DataContext = sql.Staff_Time_TBLs.Where(item =>
item.Section_Data == SelectedOption &&
item.Staff_No == intitalQuery[0];
然后我从here尝试了这个,但没有运气。
Column1.DataContext = sql.Staff_Time_TBLs.Where(item =>
item.Section_Data == SelectedOption &&
item.Staff_No == intitalQuery.First());
从链接中我可以得到的只是第一个值,我希望能够通过索引获取所有值。你是怎么做到的?
答案 0 :(得分:2)
IQueryable<T>
继承自IEnumerable
,因此拥有丰富的扩展方法,可以完成您从序列中所需的几乎所有内容。特别是,.ToList()
将可枚举变为允许有效索引的List<T>
。
.ToList()
比更明显的.ToArray()
略高一些,因为.ToArray()
需要一个额外的副本才能得到一个完全正确的数组尺寸。 (但是数组循环更快,所以这一切都取决于你正在做什么。)
答案 1 :(得分:0)
你可以这样做:
public static List<Staff_Time_TBLs> GetIndexed(string staffNo){
var stuff = sql.Staff_Time_TBLs.Where(item =>
item.Section_Data == SelectedOption &&
item.Staff_No == staffNo;
return stuff.ToList();
}
//to use it...
initialQuery.ForEach(p=>{
var indexvalue = GetIndexed(p)
});