Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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# 当我们使用FirstOrDefault(x=>;x.Id==obtId | | x.Id==pagId)时,它会计算哪个条件_C#_Xml_Linq - Fatal编程技术网

C# 当我们使用FirstOrDefault(x=>;x.Id==obtId | | x.Id==pagId)时,它会计算哪个条件

C# 当我们使用FirstOrDefault(x=>;x.Id==obtId | | x.Id==pagId)时,它会计算哪个条件,c#,xml,linq,C#,Xml,Linq,我有一个文件,其中包含项目列表,每个项目都有一个“Id”。 我的应用程序正在查找Id,并在文件中查找此Id。id可以是下面id的两个->obtId或pagId 例如:我有obtId=94和pagId=Dept,它们都存在于文件中pagId=Dept首先出现,然后文件中的obtId=94。但是我想为我的页面选择obtId,它是用户操作的准确Id 在这种情况下,我的问题应该是什么? 如何确保它根据obtId而不是pagId选择第一个元素 Items.FirstOrDefault(x => x.

我有一个文件,其中包含项目列表,每个项目都有一个“Id”。 我的应用程序正在查找Id,并在文件中查找此Id。id可以是下面id的两个->
obtId
pagId

例如:我有
obtId=94
pagId=Dept
,它们都存在于文件中
pagId=Dept
首先出现,然后文件中的
obtId=94
。但是我想为我的页面选择
obtId
,它是用户操作的准确Id

在这种情况下,我的问题应该是什么? 如何确保它根据
obtId
而不是
pagId
选择第一个元素

Items.FirstOrDefault(x => x.Id == obtId || x.Id == pagId);
更新:

 Items.FirstOrDefault(x => x.Id == obtId) ?? 
    Items.FirstOrDefault(x => x.Id == pagId);
这解决了我先搜索obtId,然后只搜索匹配的pagId的问题

您可以使用下一个代码:

var results = Items.Where(x => x.Id == objectId || x.Id == pageType).ToArray();
var result  = results.SingleOrDefault(x=>x.Id==objectId)??results.SingleOrDefault(x=>x.Id==pageType);
您可以使用下一个代码:

var results = Items.Where(x => x.Id == objectId || x.Id == pageType).ToArray();
var result  = results.SingleOrDefault(x=>x.Id==objectId)??results.SingleOrDefault(x=>x.Id==pageType);

它作为循环中的常规if语句进行计算。。返回的项将是其中一个或两个表达式的条件计算结果为true的第一项。如果没有条件为true的项,则将返回默认值。

它作为循环中的常规If语句进行计算。。返回的项将是其中一个或两个表达式的条件计算结果为true的第一项。如果没有条件为true的项,则返回默认值。

它计算第一个,如果为true,则结果为true。如果不是,则计算第二个,如果为真,则结果为真。如果不是,则结果为假


它计算第一个,如果为真,则结果为真。如果不是,则计算第二个,如果为真,则结果为真。如果不是,则结果为假



您在谈论什么文件?我只看到一些
物品
收藏我丢了。我看到了
pagId
pageType
,我看到了
obtId
objectId
,但我看不出它们之间有什么联系。@Sergey-这些项目是一个文件,我正在检查那个文件你在说什么文件?我只看到一些
物品
收藏我丢了。我看到了
pagId
pageType
,我看到了
obtId
objectId
,但我看不出它们之间有什么联系。@Sergey-这些项目是一个文件,我正在签入该文件为什么需要第一条语句?因为作者从文件中加载了这些值。(我想在文件行上存在某种可枚举性)。此代码仅从文件中获取正确的行,并从内存中的正确行中进行选择。如果我们只使用第二个语句,则文件上会有两个枚举(这不是最优的),OP语句是一个枚举。您的答案是一个或两个枚举(取决于数据)。此外,如果有多个Id正确的结果(不仅仅是第一个结果),您的答案会引发异常。我的代码有2或3个枚举,但第一个是消耗资源的文件行的枚举,第二个是内存中数组的第三个枚举(此数组的元素很少,因为它已被过滤)为什么需要第一条语句?因为作者从文件中加载此值。(我想在文件行上存在某种可枚举性)。此代码仅从文件中获取正确的行,并从内存中的正确行中进行选择。如果我们只使用第二个语句,则文件上会有两个枚举(这不是最优的),OP语句是一个枚举。您的答案是一个或两个枚举(取决于数据)。此外,如果有多个Id正确的结果(不仅仅是第一个结果),您的答案会引发异常。我的代码有2或3个枚举,但第一个是消耗资源的文件行的枚举,第二个是内存中数组的第三个枚举(此数组的元素很少,因为它已被过滤),我的第一个表达式有一个有效的id,但它总是返回我的第二个表达式(pagId)。有什么我要检查的吗?此外,我的文件中Id的顺序是pagId的,然后是ObtId的。。这有关系吗?就条件而言,谁先来不重要。尽管在一个或表达式字符串中,每个表达式都将从左到右求值,直到其中一个条件返回true或所有表达式都已用尽。有点不清楚您试图实现什么,以及代码中是否还有其他问题可以解释为什么您没有获得预期的结果。您好,Regan,我的第一个表达式有一个有效的id,但它总是返回我的第二个表达式(pagId)。有什么我要检查的吗?此外,我的文件中Id的顺序是pagId的,然后是ObtId的。。这有关系吗?就条件而言,谁先来不重要。尽管在一个或表达式字符串中,每个表达式都将从左到右求值,直到其中一个条件返回true或所有表达式都已用尽。现在还不清楚您想要实现什么,代码中是否还有其他问题可以解释为什么您没有得到预期的结果。