选择多个列并循环选定的行

时间:2012-03-15 08:31:10

标签: asp.net-mvc linq entity-framework

我希望能够选择多个列并遍历检索到的行并将所选字段存储在字符串中。

从客户中选择a.firstname,a.lastname,其中a.id ='123'并循环遍历已退出的行并让它们写入类似

的字符串
FirstName = John; LastName = Doe
FirstName = Steve; LastName = Smith

我有linq声明为

IList<string> strgradeandbatch = new List<string>();
strgradeandbatch = context.GradeAndBatches
                         .Where(T => T.RequestGuid == request.ItemGuid)
                         .Select(T => new{T.GradeName, T.Batch}).ToList();

显然这是错误的,不知道该怎么做。谢谢你提前帮助

2 个答案:

答案 0 :(得分:1)

Select方法将查询结果投影到匿名类型对象的列表中,因此它可以与字符串列表一起使用。

一种解决方案是创建一个新类

public class Grade

{
   public string GradeName {get; set;}
   public string Batch {get; set;}
}

将与Select方法

一起使用
var strgradeandbatch = context.GradeAndBatches
                         .Where(T => T.RequestGuid == request.ItemGuid)
                         .Select(T => new Grade
                              { 
                                GradeName = T.GradeName, 
                                Batch = T.Batch
                             }).ToList();

答案 1 :(得分:1)

我认为你几乎是正确的。只需删除IList<string> strgradeandbatch = new List<string>()并使用匿名类型var strgradeandbatch

string GradeName, Batch;
var strgradeandbatch = context.GradeAndBatches
                         .Where(T => T.RequestGuid == request.ItemGuid)
                         .Select(T => new{T.GradeName, T.Batch}).ToList();
foreach(var item in strgradeandbatch)
{
   GradeName = item.GradeName;
   Batch = item.Batch;
}

(注意:如果使用匿名类型,则无法从方法中返回此值)