Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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/6/xamarin/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#已按两个值对列表排序,需要比较_C#_.net - Fatal编程技术网

C#已按两个值对列表排序,需要比较

C#已按两个值对列表排序,需要比较,c#,.net,C#,.net,我有一个按两个值排序的列表。它包含一个字符串、一个TimeSpan和一个整数。它是由两个最先订购的。我将向您展示一个它包含的示例: E2801160600002066ED71483 09:36:37.6367671 1 E2801160600002066ED71483 09:36:38.1968231 1 E2801160600002066ED71483 09:36:38.8968931 2 E2801160600002066ED71483 09:36:39.4969531 2 E2801160

我有一个按两个值排序的列表。它包含一个字符串、一个TimeSpan和一个整数。它是由两个最先订购的。我将向您展示一个它包含的示例:

E2801160600002066ED71483 09:36:37.6367671 1
E2801160600002066ED71483 09:36:38.1968231 1
E2801160600002066ED71483 09:36:38.8968931 2
E2801160600002066ED71483 09:36:39.4969531 2
E2801160600002066ED71483 09:36:40.2020236 2
E2801160600002066ED71493 09:36:37.6367671 2
E2801160600002066ED71493 09:36:38.3968431 2
E2801160600002066ED71493 09:36:39.0969131 1
最后一个整数表示两个天线,第一个是第一个天线,第二个是第二个天线。它总是朝着一个方向发展,我的意思是,如果它先是朝第一个方向发展,然后再朝第二个方向发展,这意味着产品正在走向外部。如果首先是第二个,然后是第一个,这意味着产品进入了内部

因此,我需要知道如何迭代列表并比较整数,以了解产品是在外部还是在内部


在本例中,第一个产品(字符串以83结尾)在外,第二个产品(字符串以93结尾)在内。所以你知道我的意思。

假设你的模型是这样的:

class Data
{
    string ProductId {get; set;}
    Timespan Timespan {get; set;}
    int Antenna {get; set;}
}
与您的排序列表

List<Data> data = ...
…然后将产品分组投影到一个新列表(
IEnumerable
,真的),并通过检查组中的第一个项目是否具有天线ID 1或2来确定产品是否传入或传出

var productDirections = productEntries.Select(
    product => new
        {
            Id = product.Key,
            IsIncoming = product.First().Antenna == 2
        });
之后,您可以迭代新列表并检查
IsIncoming
布尔值,以获得产品的方向

foreach (var product in productDirections)
{
    if (product.IsIncoming)
        handleIncoming(product.Key);
    else
        handleOutgoing(product.Key);
}

假设您的模型看起来是这样的:

class Data
{
    string ProductId {get; set;}
    Timespan Timespan {get; set;}
    int Antenna {get; set;}
}
与您的排序列表

List<Data> data = ...
…然后将产品分组投影到一个新列表(
IEnumerable
,真的),并通过检查组中的第一个项目是否具有天线ID 1或2来确定产品是否传入或传出

var productDirections = productEntries.Select(
    product => new
        {
            Id = product.Key,
            IsIncoming = product.First().Antenna == 2
        });
之后,您可以迭代新列表并检查
IsIncoming
布尔值,以获得产品的方向

foreach (var product in productDirections)
{
    if (product.IsIncoming)
        handleIncoming(product.Key);
    else
        handleOutgoing(product.Key);
}

感谢阿本丹扎,谢谢你的帮助

var productDirection = productEntries.Select(
                    product => new
                        {
                            Product = product.Key,
                            IsIncoming = product.First().antena == 2 && product.Last().antena == 1,
                            IsOutgoing = product.First().antena == 1 && product.Last().antena == 2,
                            StillInside = product.First().antena == 1
                        });

                foreach (var product in productDirection)
                {
                    if (product.IsIncoming)
                    {
            // handle incoming products
                        Console.WriteLine("The product " + product.Product + " is incoming");
                    }

                    else if (product.IsOutgoing)
                    {
                        // handle outgoing products
                        Console.WriteLine("The product " + product.Product + " is outgoing");
                    }
                    else if (product.StillInside)
                    {
            //handle still inside products
                        Console.WriteLine("The product " + product.Product + " is still inside");
                    }
                    else
                    {
            //handle still outside products
                        Console.WriteLine("The product " + product.Product + " is still outside");
                    }

                }

感谢阿本丹扎,谢谢你的帮助

var productDirection = productEntries.Select(
                    product => new
                        {
                            Product = product.Key,
                            IsIncoming = product.First().antena == 2 && product.Last().antena == 1,
                            IsOutgoing = product.First().antena == 1 && product.Last().antena == 2,
                            StillInside = product.First().antena == 1
                        });

                foreach (var product in productDirection)
                {
                    if (product.IsIncoming)
                    {
            // handle incoming products
                        Console.WriteLine("The product " + product.Product + " is incoming");
                    }

                    else if (product.IsOutgoing)
                    {
                        // handle outgoing products
                        Console.WriteLine("The product " + product.Product + " is outgoing");
                    }
                    else if (product.StillInside)
                    {
            //handle still inside products
                        Console.WriteLine("The product " + product.Product + " is still inside");
                    }
                    else
                    {
            //handle still outside products
                        Console.WriteLine("The product " + product.Product + " is still outside");
                    }

                }

请提供列表类型的定义好吗?存储
字符串
Timespan
int
的属性如何调用。这将使回答更容易。创建一个类来保存这些值,分离并解析字符串,并用这些值填充该类,然后在列表上迭代以确定所需内容。您能提供列表类型的定义吗?存储
字符串
Timespan
int
的属性如何调用。这将使回答更容易。创建一个类来保存这些值,分离并解析字符串,并用这些值填充该类,然后在列表上迭代以确定所需内容。当两个天线都能识别标记时,您的解决方案工作得很好。但现在我有了一个新问题。当只有第一根天线读到它时,它就说产品在外面,当只有第二根天线读到它时,它就说产品在里面。这是无效的,因为当第一根天线只读取时,产品仍在内部,当第二根天线只读取时,产品仍在外部。无论如何,谢谢你的帮助,我希望你能帮助我,真的非常感谢!对不起,我不太明白。你的意思是天线ID
int
可以为空吗?你能用这些案例更新你上面的示例行吗?我修复了它,我的意思是,如果该对象仅由2号天线读取,则该产品仍在外部,且未进入。如果该产品仅由1号天线读取,则该产品仍在内部,且未输出。查看我的新答案以查看修复。当两个天线都能识别标签时,您的解决方案效果良好。但现在我有了一个新问题。当只有第一根天线读到它时,它就说产品在外面,当只有第二根天线读到它时,它就说产品在里面。这是无效的,因为当第一根天线只读取时,产品仍在内部,当第二根天线只读取时,产品仍在外部。无论如何,谢谢你的帮助,我希望你能帮助我,真的非常感谢!对不起,我不太明白。你的意思是天线ID
int
可以为空吗?你能用这些案例更新你上面的示例行吗?我修复了它,我的意思是,如果该对象仅由2号天线读取,则该产品仍在外部,且未进入。如果该产品仅由1号天线读取,则该产品仍在内部,且未输出。查看我的新答案以查看修复。