Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq从2个具有唯一Id的列表中获取值_C#_Linq - Fatal编程技术网

C# Linq从2个具有唯一Id的列表中获取值

C# Linq从2个具有唯一Id的列表中获取值,c#,linq,C#,Linq,我有一节课要上 public class MyClass { public int Id { get; set; } public string Name { get; set; } public int Price { get; set; } } 现在,这个类将从不同的表中获取值,但它们具有公共ID 这是我在循环中得到的列表 var List1 = item.TicketTypes.Where(m => m.PerformanceID == item.Id)

我有一节课要上

public class MyClass
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Price { get; set; }
}
现在,这个类将从不同的表中获取值,但它们具有公共ID

这是我在循环中得到的列表

var List1 = item.TicketTypes.Where(m => m.PerformanceID == item.Id)
                    .Select(t => new { t.Name, t.ID});

var List2 = item.Pricies.Where(m => m.PerformanceID == item.Id)
                    .Select(t => new { t.Price, t.ID });
项是每个循环实例的对象

我想要的是


我想让MyClass的列表根据其ID填写实体名称和价格。

这里没有太多信息供我测试,但我有以下建议:

// Make sure to add a constructor to MyClass
var List1 = item.TicketTypes.Where(m => m.PerformanceID == item.Id)
                            .Select(t => new MyClass(t.Name, t.ID, item.Pricies.FirstOrDefault(p => p.PerformanceID == t.ID).Price));

这应该会给你期望的结果,但就像我说的,我没有足够的信息来测试这一点,所以请确保你对问题进行评论,以便我们可以一起解决它们。

这里没有太多信息供我测试,但我有以下建议:

// Make sure to add a constructor to MyClass
var List1 = item.TicketTypes.Where(m => m.PerformanceID == item.Id)
                            .Select(t => new MyClass(t.Name, t.ID, item.Pricies.FirstOrDefault(p => p.PerformanceID == t.ID).Price));

这应该会给你期望的结果,但就像我说的,我没有足够的信息来测试这一点,所以请确保你对问题进行评论,以便我们可以一起解决它们。

在Linq声明中,如果我的假设是正确的(无法测试它):


如果您需要Linq语句中的列表,如果我的假设正确(无法测试),请使用
.ToList()

如果需要列表,请使用
.ToList()
尝试以下操作:

var query = List1.Join(List2, l1 => l1.Id, l2 => l2.Id, (l1, l2) => new { ID = l1.Id, Name = l1.Name, Price = l2.Price });


foreach (var obj in query)
{
    Console.WriteLine("{0} - {1} - {2}", obj.ID, obj.Name, obj.Price);
}
试试这个:

var query = List1.Join(List2, l1 => l1.Id, l2 => l2.Id, (l1, l2) => new { ID = l1.Id, Name = l1.Name, Price = l2.Price });


foreach (var obj in query)
{
    Console.WriteLine("{0} - {1} - {2}", obj.ID, obj.Name, obj.Price);
}

你能用一些数据描述一下吗?你试过什么吗?像加入?。。什么是
?目前,它正在要求有人为您编写代码-请显示您的想法tried@GiladGreen项是我循环中的实例,我尝试了linq Join,但由于我遵循.net样板库体系结构,在Join中绑定所有服务并不容易,所以我尝试了这种方法。您尝试过类似的方法吗
.Select(t=>newmyclass(){Price=t.Price,Id=t.Id,Name=t.Name})@FrankM,我在列表2中得到了价格,而名字在列表1中,你将如何加入?你能用一些数据描述一下吗?你试过什么吗?像加入
?。。什么是
?目前,它正在要求有人为您编写代码-请显示您的想法tried@GiladGreen项是我循环中的实例,我尝试了linq Join,但由于我遵循.net样板库体系结构,在Join中绑定所有服务并不容易,所以我尝试了这种方法。您尝试过类似的方法吗
.Select(t=>newmyclass(){Price=t.Price,Id=t.Id,Name=t.Name})@FrankM,我在列表2中得到价格,而名字在列表1中,你将如何加入?