gpt4 book ai didi

linq - 如何将 linq 结果集作为自定义类型返回

转载 作者:行者123 更新时间:2023-12-04 18:24:05 26 4
gpt4 key购买 nike

public class LearnerInfo
{
public string Id { get; set; }
public string Name { get; set; }


public LearnerInfo(string id, string name)
{
this.Id = id;
this.Name = name;
}
}


public class LearnerCourse
{
public string Id { get; set; }
public string ExpiredCount { get; set; }
public string Soonduecount { get; set; }
public string Currentmonthcount { get; set; }
public string Currentmonthplus1count { get; set; }
public string Currentmonthplus2count { get; set; }
public string Currentmonthplus3count { get; set; }
public string Currentmonthplus4count { get; set; }
public string Currentmonthplus5count { get; set; }
public string Subtotal { get; set; }


public LearnerCourse(string id, string exp, string soonDue, string current, string plus1, string plus2,
string plus3, string plus4, string plus5)
{
this.Id = id;
this.ExpiredCount = exp;
this.Soonduecount = soonDue;
this.Currentmonthcount = current;
this.Currentmonthplus1count = plus1;
this.Currentmonthplus2count = plus2;
this.Currentmonthplus3count = plus3;
this.Currentmonthplus4count = plus4;
this.Currentmonthplus5count = plus5;
}


public LearnerCourse()
{ }
}

public class InfoList : IEnumerable<CombinedInfo>
{

private List<CombinedInfo> _infoList = new List<CombinedInfo>();

public InfoList()
{
_infoList = new List<CombinedInfo>();
}


public void Add(CombinedInfo i)
{
_infoList.Add(i);
}


public IEnumerator<CombinedInfo> GetEnumerator()
{
return _infoList.GetEnumerator();
}


//IEnumerable Members
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
}


public class CombinedInfo
{
public string Id { get; set; }
public string ExpiredCount { get; set; }
public string Soonduecount { get; set; }
public string Currentmonthcount { get; set; }
public string Currentmonthplus1count { get; set; }
public string Currentmonthplus2count { get; set; }
public string Currentmonthplus3count { get; set; }
public string Currentmonthplus4count { get; set; }
public string Currentmonthplus5count { get; set; }
public string Name { get; set; }
}


static void Main(string[] args)
{
LearnerCourse lc1 = new LearnerCourse("777", "1", "1", "0", "1", "0", "0", "0", "0");
LearnerCourse lc2 = new LearnerCourse("589", "1", "0", "0", "0", "0", "0", "0", "0");

LearnerInfo li1 = new LearnerInfo("777", "moe");
LearnerInfo li2 = new LearnerInfo("589", "larry");

LearnerCourse[] lCourses = new LearnerCourse[2];
lCourses[0] = lc1;
lCourses[1] = lc2;

LearnerInfo[] linfos = new LearnerInfo[2];
linfos[0] = li1;
linfos[1] = li2;


//test linq join for object array
var myJoin = (from c in lCourses
join i in linfos on c.Id equals i.Id
select new {
c.ExpiredCount,
c.Soonduecount,
c.Currentmonthcount,
c.Currentmonthplus1count,
c.Currentmonthplus2count,
c.Currentmonthplus3count,
c.Currentmonthplus4count,
c.Currentmonthplus5count,
c.Subtotal,
i.Id,
i.Name
});


foreach (CombinedInfo o in l)
{
//loop through and can add to list of type CombinedInfo
}
}

我没有通过 foreach 循环,而是在尝试从我的 linq 查询中获取结果集以仅返回一个列表时遇到问题。

建议?

最佳答案

两件事情:

a)项目到自定义类,而不是匿名类型。在您的情况下,您已经拥有 CombinedInfo定义 - 使用它。

b) 使用 ToList()强制执行并将结果转换为 List<T>

var list = (from c in lCourses
join i in linfos on c.Id equals i.Id
select new CombinedInfo() {
ExpiredCount = c.ExpiredCount,
Soonduecount = c.Soonduecount,
Currentmonthcount = c.Currentmonthcount,
Currentmonthplus1count = c.Currentmonthplus1count,
Currentmonthplus2count = c.Currentmonthplus2count,
Currentmonthplus3count = c.Currentmonthplus3count,
Currentmonthplus4count = c.Currentmonthplus4count,
Currentmonthplus5count = c.Currentmonthplus5count,
Subtotal = c.Subtotal,
Id = i.Id,
Name = i.Name
}).ToList();

关于linq - 如何将 linq 结果集作为自定义类型返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10082879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com