Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.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# 匿名订购_C#_.net_Linq_Compiler Errors_Sql Order By - Fatal编程技术网

C# 匿名订购

C# 匿名订购,c#,.net,linq,compiler-errors,sql-order-by,C#,.net,Linq,Compiler Errors,Sql Order By,关于,我尝试了下面的一个答案 vehicleList.OrderBy(c=> { Car car = c as Car; if (car != null) return car.ModelName else return ""; } 但它给出了编译器错误: 方法的类型参数 'System.Linq.Enumerable.OrderBy(System.Collections.Generic.IEnumerable, 无法从用法推断Sy

关于,我尝试了下面的一个答案

vehicleList.OrderBy(c=>
{
    Car car = c as Car;
    if (car != null)
        return car.ModelName
    else
        return "";
}
但它给出了编译器错误:

方法的类型参数 'System.Linq.Enumerable.OrderBy(System.Collections.Generic.IEnumerable, 无法从用法推断System.Func“”。尝试 显式指定类型参数

这有什么不对?如何纠正

我努力实现的目标如下:

  • 如果对象类型为Car,则按模型名排序
  • 否则,如果对象id为Train类型,则按TrainName

您是否尝试过您引用的问题中的建议,使用Linq
演员阵容

var sorted = uiItems.Cast<Contact>()
                    .OrderBy(c => contact.Presence; );
var sorted=uiItems.Cast()
.OrderBy(c=>contact.Presence;);

您是否尝试过引用问题中的建议,使用Linq
演员阵容

var sorted = uiItems.Cast<Contact>()
                    .OrderBy(c => contact.Presence; );
var sorted=uiItems.Cast()
.OrderBy(c=>contact.Presence;);

您可以像这样安装比较器:

var sorted = uiItems.OrderBy(x => x.Contact, new YourComparer ());

public class YourComparer : IComparer<Contact>
{
    public int Compare(Contact? x, Contact? y)
    {
        if (x == y)
            return 0;
        if (x == null)
            return 1;
        if (y == null)
            return -1;
        if (x.Presence == null)
            return 1;
        if (y.Presence == null)
            return -1;

        return return x.Presence < y.Presence ? -1 : 1;
    }
}
var sorted=uiItems.OrderBy(x=>x.Contact,newyourcomarer());
公共类比较程序:IComparer
{
公共整数比较(联系人?x,联系人?y)
{
如果(x==y)
返回0;
如果(x==null)
返回1;
如果(y==null)
返回-1;
if(x.Presence==null)
返回1;
if(y.Presence==null)
返回-1;
返回x.存在
您可以像这样安装比较器:

var sorted = uiItems.OrderBy(x => x.Contact, new YourComparer ());

public class YourComparer : IComparer<Contact>
{
    public int Compare(Contact? x, Contact? y)
    {
        if (x == y)
            return 0;
        if (x == null)
            return 1;
        if (y == null)
            return -1;
        if (x.Presence == null)
            return 1;
        if (y.Presence == null)
            return -1;

        return return x.Presence < y.Presence ? -1 : 1;
    }
}
var sorted=uiItems.OrderBy(x=>x.Contact,newyourcomarer());
公共类比较程序:IComparer
{
公共整数比较(联系人?x,联系人?y)
{
如果(x==y)
返回0;
如果(x==null)
返回1;
如果(y==null)
返回-1;
if(x.Presence==null)
返回1;
if(y.Presence==null)
返回-1;
返回x.存在
这解决了错误:

var sortedVehicles = vehicleList.OrderBy<Vehicle, string>(c=>
    {
        ...
    });
var sortedVehicles=vehicleList.OrderBy(c=>
{
...
});
这解决了错误:

var sortedVehicles = vehicleList.OrderBy<Vehicle, string>(c=>
    {
        ...
    });
var sortedVehicles=vehicleList.OrderBy(c=>
{
...
});

看下面的例子:

class Item
{
    public int X;
    public string Y;
}

var items = new Item[100];
var ordered = items.OrderBy<Item, string>(i => i.Y);
类项目
{
公共int X;
公共字符串Y;
}
可变项目=新项目[100];
var ordered=items.OrderBy(i=>i.Y);

OrderBy
需要两种类型。前者是可枚举的,后者用于lambda表达式。此外,在某些情况下,必须铸造正在使用的集合元素。如果您确定所有类型都是特定类型或类型的
,则可以在
OrderBy
之前使用
Cast
方法,以管理其他类型。

查看以下示例:

class Item
{
    public int X;
    public string Y;
}

var items = new Item[100];
var ordered = items.OrderBy<Item, string>(i => i.Y);
类项目
{
公共int X;
公共字符串Y;
}
可变项目=新项目[100];
var ordered=items.OrderBy(i=>i.Y);

OrderBy
需要两种类型。前者是可枚举的,后者用于lambda表达式。此外,在某些情况下,必须铸造正在使用的集合元素。如果您确信所有类型都是特定类型或类型的
,那么您可以使用
Cast
方法在
OrderBy
之前进行转换,以便与其他类型进行比较。

您的代码说的是
联系人
,但您所说的是
汽车
火车
!什么是
uiItems
?对不起,我把实际的程序代码。。。我使用车辆,因为它很容易理解…现在将更正。谢谢
车辆列表的类型是什么?通常情况下,您不应该出现此错误。您的代码上显示的是
联系人
,但您所说的是
汽车
火车
!什么是
uiItems
?对不起,我把实际的程序代码。。。我使用车辆,因为它很容易理解…现在将更正。谢谢
车辆列表的类型是什么?通常您不应该出现此错误。但当某些项目不是
联系人时,会出现不同的行为。也许这里使用TypeOf更好。集合应具有非接触值。var sorted=uiItems.TypeOf().OrderBy(c=>contact.Presence;)@voo:
of type
也没有完全相同的行为——它将不属于
Contact
s的对象从已排序的枚举中排除。但据我理解的示例,func必须执行完全相同的操作-与Contact type进行比较并返回已筛选的有序Contact集合。如果是这样的话,这里的TypeOf更合适,当某些项目不是
Contact
s时,它有不同的行为。也许这里使用TypeOf更好。集合应具有非接触值。var sorted=uiItems.TypeOf().OrderBy(c=>contact.Presence;)@voo:
of type
也没有完全相同的行为——它将不属于
Contact
s的对象从已排序的枚举中排除。但据我理解的示例,func必须执行完全相同的操作-与Contact type进行比较并返回已筛选的有序Contact集合。如果是的话,它的类型在这里更合适