Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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# join子句中某个表达式的类型不正确_C#_Linq - Fatal编程技术网

C# join子句中某个表达式的类型不正确

C# join子句中某个表达式的类型不正确,c#,linq,C#,Linq,我正在学习LINQ并尝试使用交叉连接,我得到了这个错误:join子句中的一个表达式的类型不正确 无法在交叉联接中使用GetCategories()?此请求位于main中,但其外部的功能除外 var q = from c in GetCategories() join p in GetProducts() on c equals p.CategoryID where c.Name = "Beverages" select new { ID = c,

我正在学习LINQ并尝试使用交叉连接,我得到了这个错误:join子句中的一个表达式的类型不正确

无法在交叉联接中使用GetCategories()?此请求位于main中,但其外部的功能除外

var q = from c in GetCategories()
        join p in GetProducts() on c equals p.CategoryID
        where c.Name = "Beverages"
        select new { ID = c, p.Name };
方法签名:

public static IEnumerable<Category> GetCategories()
List<Category> categories = new List<Category>( );
categories.Add( new Category { ID = 1, Name = "Beverages" } );

public static IEnumerable<Product> GetProducts()
List<Product> products = new List<Product>( );
products.Add( new Product { Name = "Milk",           Price = 90,  CategoryID = 4, ID = 1 } );
public静态IEnumerable GetCategories()
列表类别=新列表();
添加(新类别{ID=1,Name=“饮料”});
公共静态IEnumerable GetProducts()
列表产品=新列表();
添加(新产品{Name=“Milk”,价格=90,类别ID=4,ID=1});

您需要指定要加入的
类别中的哪个字段。。最有可能的
ID

from c in GetCategories()
join p in GetProducts() on c.ID equals p.CategoryID
where c.Name == "Beverages"
select new { ID = c.ID, p.Name };

您的方法上的返回类型是什么?这是否有帮助?public static IEnumerable GetProducts()public static IEnumerable GetCategories()我添加了更多的行,这样您就可以看到列表是如何得到1个错误的,不能隐式地将类型“string”转换为“bool”,其中c.Name=“Beverages”无法理解bool是如何进入的,在LINQ中不可能找到这样的名称吗?谢谢您的帮助,也许还有最后一点帮助,我试图只打印以G开头的单词。我确实添加了orderby(p.name.Startswith(“G”))一行,但它打印的每一行都与饮料具有相同的类别ID,而不仅仅是以G开头的单词。找到它,使用orderby,但更改了它的位置:)