我有一个文件,其中包含项目列表,每个项目都有一个" 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
答案 0 :(得分:2)
它作为循环中的常规if语句进行求值。返回的项将是条件为一个或两个表达式求值为true的第一个项。如果没有条件为true的项目,则返回默认值。
答案 1 :(得分:1)
您可以使用下一个代码:
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);
答案 2 :(得分:1)
YourType FindMatchOrDefault(int objectId, int pageType)
{
YourType secondaryMatch = null;
foreach (var x in Items)
{
if (x.Id == objectId)
return x; // primary match, exit loop
if (secondaryMatch == null && x.Id == pageType)
secondaryMatch = x;
}
return secondaryMatch;
}
答案 3 :(得分:0)
它评估第一个,如果为true,则结果为true。如果不是,则计算第二个,如果为true,则结果为true。如果没有,结果是错误的。