我目前有这个数据集
所以,我试图将基于Category Id的数据作为输入返回。但是,如果该类别不存在关键字,则应返回其父级的数据
这是一个例子
输入:202;输出:ParentCategoryID = 201,Name = Operating System, 关键词=教学
这就是我现在所拥有的(testData是数据集)
public static string GetData(int categoryId)
{
var searchResult = testData.Where(x => x.CategoryId == categoryId).FirstOrDefault();
//if has no keywords return parent data
if(string.IsNullOrEmpty(searchResult.Keywords))
{
var parentData = testData.Where(x => x.CategoryId == searchResult.ParentCategoryId);
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append("ParentCategoryId=");
stringBuilder.Append(parentData.ParentCategoryId);
stringBuilder.Append(", Name=");
stringBuilder.Append(parentData.Name);
stringBuilder.Append(", Keywords=");
stringBuilder.Append(parentData.Keywords);
return stringBuilder.ToString();
}
但这仅适用于一位家长。它适用于这种场景
输入:201;输出:ParentCategoryID = 200,Name = Computer, 关键词=教学
我认为我的LINQ查询存在问题,我将不胜感激任何建议
答案 0 :(得分:0)
简单的while循环可能就是你需要的
std::sort(E.begin(), E.end(), [](const Entry& a, const Entry& b) { return /* whether a should precede b */; } );
答案 1 :(得分:0)
通过递归函数获取父级:
public static WhateverYourDataTypeIs GetParent(int parentCategoryId)
var parentData = testData.Where(x => x.CategoryId == parentCategoryId).FirstOrDefault();
if(string.IsNullOrEmpty(parentData.Keywords))
{
return GetParent(parentData.ParentCategoryId);
}
return parentData;
}
只是打电话给那而不是旧的方式,你得到了父母
// OLD:
var parentData = testData.Where(x => x.CategoryId == searchResult.ParentCategoryId).FirstOrDefault();
// NEW:
var parentData = GetParent(searchResult.ParentCategoryId)