C# Linq Into子句缺少字段
我想在输出中也获取公民的姓名,但自动完成不会在列表中显示item.Name\u姓氏。为什么会这样?执行“INTO”子句时该字段丢失了吗 TLDR:在生成临时结果时,我无法检索患者姓名C# Linq Into子句缺少字段,c#,linq,C#,Linq,我想在输出中也获取公民的姓名,但自动完成不会在列表中显示item.Name\u姓氏。为什么会这样?执行“INTO”子句时该字段丢失了吗 TLDR:在生成临时结果时,我无法检索患者姓名 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LINQ_INTO_CLAUSE { public clas
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LINQ_INTO_CLAUSE
{
public class Citizen
{
public int id;
public string name_surname;
}
public class Illness
{
public int id;
public string illnessName;
}
class Program
{
static void Main(string[] args)
{
Citizen[] patients = new[] { new Citizen {id = 123, name_surname = "John" },
new Citizen {id = 2345, name_surname = "Derek" },
new Citizen {id = 345, name_surname = "Ahmed" },
new Citizen {id = 31345, name_surname = "Mehmed" }};
Illness[] illnesses = new[] { new Illness { id = 123, illnessName = "Flu" },
new Illness { id = 7726, illnessName = "Flu" },
new Illness { id = 123, illnessName = "Headache" },
new Illness { id = 2345, illnessName = "Kolera" },
new Illness { id = 31345, illnessName = "Kolera" }};
var _queryResult = from s in patients
join k in illnesses on s.id equals k.id
into temporaryResult
from c in temporaryResult
select c;
foreach (var item in _queryResult)
{
Console.WriteLine(item.id+"-"+item.illnessName);
}
}
}
}
您可以将其存储在匿名类型中,而不需要将
输入到
:
var _queryResult = from p in patients
join i in illnesses on p.id equals i.id
select new { Patient = p, Illness = i};
foreach (var x in _queryResult)
{
Console.WriteLine(x.Illness.id + "-" + x.Illness.illnessName + " - " + x.Patient.name_surname);
}
如果您想使用into
关键字获取一组公民的所有疾病,您仍然可以将其存储为匿名类型。但不要在之后使用from
进入
,这会使组再次变平:
var queryResult = from p in patients
join i in illnesses on p.id equals i.id
into allPatientIllnesses
select new
{
Patient = p,
IlnessList = allPatientIllnesses.ToList()
};
foreach (var item in queryResult)
{
Citizen patient = item.Patient;
string illnesses = string.Join(",", item.IlnessList.Select(i => i.illnessName));
}
您可以将其存储在匿名类型中,而不需要将
输入到
:
var _queryResult = from p in patients
join i in illnesses on p.id equals i.id
select new { Patient = p, Illness = i};
foreach (var x in _queryResult)
{
Console.WriteLine(x.Illness.id + "-" + x.Illness.illnessName + " - " + x.Patient.name_surname);
}
如果您想使用into
关键字获取一组公民的所有疾病,您仍然可以将其存储为匿名类型。但不要在之后使用from
进入
,这会使组再次变平:
var queryResult = from p in patients
join i in illnesses on p.id equals i.id
into allPatientIllnesses
select new
{
Patient = p,
IlnessList = allPatientIllnesses.ToList()
};
foreach (var item in queryResult)
{
Citizen patient = item.Patient;
string illnesses = string.Join(",", item.IlnessList.Select(i => i.illnessName));
}
你不知道;不需要将
插入…
位,然后您可以创建一个更好的匿名类型,其中包含您需要的详细信息:
var _queryResult = from s in patients
join k in illnesses on s.id equals k.id
select new
{
Name = s.name_surname,
Id = k.id,
Illness = k.illnessName
};
foreach (var item in _queryResult)
{
Console.WriteLine(item.Name + "-" + item.Id + "-" + item.Illness);
}
你不知道;不需要将
插入…
位,然后您可以创建一个更好的匿名类型,其中包含您需要的详细信息:
var _queryResult = from s in patients
join k in illnesses on s.id equals k.id
select new
{
Name = s.name_surname,
Id = k.id,
Illness = k.illnessName
};
foreach (var item in _queryResult)
{
Console.WriteLine(item.Name + "-" + item.Id + "-" + item.Illness);
}
为什么要这样格式化代码?天哪,这有什么不好?因为某种原因,你有50个缩进空间。我必须滚动阅读它,因为我这样做是因为我希望那些对象创建部分看起来更整洁。Lol只需将第一项放在新行上即可!:)为什么要这样格式化代码?天哪,这有什么不好?因为某种原因,你有50个缩进空间。我必须滚动阅读它,因为我这样做是因为我希望那些对象创建部分看起来更整洁。Lol只需将第一项放在新行上即可!:)是的,这是真的,但我想问的是,为什么“into”子句会从结果中删除name_姓氏字段?我的意思是,我希望名字和姓氏也存储在临时结果集中,但事实并非如此。哦,好吧,有时候这个网站很奇怪。两个答案非常相似,但我投了反对票,另一个投了3票!是的,你的答案和上面的答案一样。但是你被否决了,洛威尔·蒂姆的答案好多了,现在他编辑了它,我想我只删除这一个。不,不,不要删除它。你的帖子给了我深刻的见解。是的,这是真的,但我想问的是,为什么“into”子句会从结果中删除name_姓氏字段?我的意思是,我希望名字和姓氏也存储在临时结果集中,但事实并非如此。哦,好吧,有时候这个网站很奇怪。两个答案非常相似,但我投了反对票,另一个投了3票!是的,你的答案和上面的答案一样。但是你被否决了,洛威尔·蒂姆的答案好多了,现在他编辑了它,我想我只删除这一个。不,不,不要删除它。你的帖子给了我深刻的见解。谢谢你,但这并没有回答我的问题。我在问为什么名字和姓氏字段不存储在临时结果集中?@Lyrk:现在它在回答这个问题。从
到之后的将结果展平为疾病
,您无法再访问该公民。看我的编辑谢谢这真的很重,但我看了你的代码后明白了。谢谢,但这并没有回答我的问题。我在问为什么名字和姓氏字段不存储在临时结果集中?@Lyrk:现在它在回答这个问题。从到之后的将结果展平为疾病
,您无法再访问该公民。看看我的编辑谢谢这真的很重,但我看了你的代码后明白了。