成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

ASP.NET MVC獲取多級類別組合下的產品

瀏覽:373日期:2022-06-08 10:34:05

本篇是針對我在做項目過程中遇到的特定需求而做的一個Demo, 沒有很大的通用性,讀者酌情可繞行。

標題不能完全表達本意,確切的情景需要展開說。假設有三級分類,關于分類這樣設計:

    public class Category
    {
public int Id { get; set; }
public string Name { get; set; }
public int ParentId { get; set; }
    }

然后產品可以屬于多個分類,以下的Categories屬性值是以英文逗號隔開、由分類編號拼接而成的字符串。

    public class Product
    {
public int Id { get; set; }
public string Name { get; set; }
public string Categories { get; set; }
    }

由于種種原因,Categories屬性值只是存儲了由第三級分類編號拼接而成的字符串。

在前端,需要把分類作為查詢條件來查詢產品,可能只選擇一級分類,把一個數字字符串(比如"1")發送給服務端;可能同時選擇一級和二級分類,也把一個數字字符串(比如"1,2")發送給服務端;當然,也有可能同時選擇一級、二級和三級分類作為查詢條件(比如"1,2,3")。換句話說,如果諸如"1"或"1,2"或"1,2,3"這樣的查詢條件轉換成數組后,如果數組的每一個元素都被包含在Product的Categories屬性值轉換成的數組中,那這個產品就符合搜索條件。

簡單來說,是這樣:假設搜索條件是"1,2",Product的Categories屬性值為"1,3,2,5",我們不是判斷"1,2"這個字符串是否包含在"1,3,2,5"字符串中,而是把"1,2"先split成數組,叫做array1, 把"1,3,2,5"也split成數組,叫做array2,最后判斷array1的每個元素是否都被包含在array2中。

還有一個問題需要解決:當前的Product的Categories屬性值只存儲了所有第三級分類編號拼接成的字符串,而前端輸入的搜索條件可能會包含一級分類或二級分類等,所以,我們需要把Product轉換一下,希望有一個類的某個屬性值能存儲由一級、二級、三級分類拼接而成的字符串。

    public class ProductWithThreeCate
    {
public int Id { get; set; }
public string Name { get; set; }
public string AllCategoreis { get; set; }
    }

以上, AllCategoreis屬性值就用來存儲由一級、二級、三級分類拼接而成的字符串。

有一個方法獲取所有分類:

static List<Category> GetCategories()
{
    return new List<Category>()
    {
new Category(){Id = 1, Name = "根", ParentId = -1},
new Category(){Id = 2, Name = "一級分類1",ParentId = 1},
new Category(){Id = 3, Name = "一級分類2", ParentId = 1},
new Category(){Id = 4, Name = "二級分類11",ParentId = 2},
new Category(){Id = 5, Name = "二級分類12",ParentId = 2},
new Category(){Id = 6, Name = "二級分類21",ParentId = 3},
new Category(){Id = 7, Name = "二級分類22",ParentId = 3},
new Category(){Id = 8, Name = "三級分類111",ParentId = 4},
new Category(){Id = 9, Name = "三級分類112",ParentId = 4},
new Category(){Id = 10, Name = "三級分類121",ParentId = 5},
new Category(){Id = 11, Name = "三級分類122",ParentId = 5},
new Category(){Id = 12, Name = "三級分類211",ParentId = 6},
new Category(){Id = 13, Name = "三級分類212",ParentId = 6},
new Category(){Id = 14, Name = "三級分類221",ParentId = 7}
    };
}

有一個方法獲取所有產品:

static List<Product> GetProducts()
{
    return new List<Product>()
    {
new Product(){Id = 1, Name = "產品1",Categories = "10,12"},
new Product(){Id = 2, Name = "產品2", Categories = "12,13"},
new Product(){Id = 3, Name = "產品3",Categories = "10,11,12"},
new Product(){Id = 4, Name = "產品4",Categories = "13,14"},
new Product(){Id = 5, Name = "產品5",Categories = "11,13,14"}
    };
}

接下來的方法是根據搜索條件(比如是"1,2")來查找滿足條件的ProductWithThreeCate集合,如下:

/// <summary>
/// 獲取滿足某些條件的集合
/// </summary>
/// <param name="query">以英文逗號隔開的字符串,比如:2,5</param>
/// <returns></returns>
static List<ProductWithThreeCate> GetResultByQuery(string query)
{
    //最終結果
    List<ProductWithThreeCate> result = new List<ProductWithThreeCate>();
    //臨時結果 此時ProductWithThreeCat的屬性AllCategoreis包含所有一級、二級、三級分類ID拼接成的字符串
    List<ProductWithThreeCate> tempResult = new List<ProductWithThreeCate>();
    //獲取所有的產品
    List<Product> allProducts = GetProducts();
    //遍歷這些產品
    foreach (var item in allProducts)
    {
ProductWithThreeCate productWithThreeCate = new ProductWithThreeCate();
productWithThreeCate.Id = item.Id;
productWithThreeCate.Name = item.Name;
//所有一級、二級、三級拼接成以英文逗號隔開的字符串
string temp = string.Empty;
//當前產品只包含三級拼接成的、也是以英文隔開的字符串,split成數組
string[] theThirdCates = item.Categories.Split(",");
//遍歷這些三級數組
foreach (string i in theThirdCates)
{
    //三級類別轉換成整型
    int theThirdInt = int.Parse(i);
    //獲取三級類別
    Category theThirdCate = GetCategories().Where(c => c.Id == theThirdInt).FirstOrDefault();
    //獲取二級類別
    Category theSecondCate = GetCategories().Where(c => c.Id == theThirdCate.ParentId).FirstOrDefault();
    //獲取一級類別
    Category theFirstCate = GetCategories().Where(c => c.Id == theSecondCate.ParentId).FirstOrDefault();
    temp += i + "," + theSecondCate.Id.ToString() + "," + theFirstCate.Id.ToString() + ",";
}
//去掉最后一個英文逗號
temp = temp.Substring(0, temp.Length - 1);
//轉換成集合,去除重復項,比如不同的三級可能有相同的一級或二級父類
IEnumerable<string> tempArray = temp.Split(",").AsEnumerable().Distinct();
//所有一級、二級、三級拼接成以英文逗號隔開的字符串,但已經去除了重復的一級和二級
string tempagain = string.Empty;
//再次遍歷集合拼接成字符串
foreach (var s in tempArray)
{
    tempagain += s + ",";
}
productWithThreeCate.AllCategoreis = tempagain.Substring(0, tempagain.Length - 1);
tempResult.Add(productWithThreeCate);
    }
    //遍歷臨時結果
    foreach (var item in tempResult)
    {
//把當前包含一級、二級、三級的,以英文逗號隔開的字符串split成數組
string[] itemArray = item.AllCategoreis.Split(",");
//把當前查詢字符串split成數組
string[] queryArray = query.Split(",");
//如果queryArray的每一個元素都被包含在itemArray中,那就保存起來
if (queryArray.All(x => itemArray.Contains(x)) == true)
{
    result.Add(item);
}
    }
    return result;
}

客戶端的調用如下:

    List<ProductWithThreeCate> result = GetResultByQuery("2,5");
    //遍歷最終的結果
    foreach (var item in result)
    {
Console.WriteLine(item.Name+ "  " + item.AllCategoreis);
    }
    Console.ReadKey(); 

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對的支持。如果你想了解更多相關內容請查看下面相關鏈接

標簽: ASP.NET
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产精品高潮呻吟| 国产一区三区三区| 极品少妇一区二区三区精品视频| 国产日韩欧美| 国产亚洲污的网站| 成人丝袜18视频在线观看| 欧美写真视频网站| 久久久噜噜噜| 欧美一区二区精品久久911| 久久se这里有精品| 欧美三级中文字幕| 精品系列免费在线观看| 欧美日韩性生活| 国产资源精品在线观看| 欧美剧情片在线观看| 国产美女精品一区二区三区| 制服丝袜激情欧洲亚洲| 国产福利一区二区三区在线视频| 69堂国产成人免费视频| 国产黄色成人av| 精品久久久久久久久久久久包黑料 | 亚洲同性gay激情无套| 亚洲午夜在线| 日韩毛片精品高清免费| 亚洲精品中文字幕在线| 亚洲综合丝袜美腿| 午夜在线播放视频欧美| 天天综合网 天天综合色| 91在线精品秘密一区二区| 久久一区二区三区国产精品| 欧美淫片网站| 国产精品国产三级国产aⅴ中文 | 久久99久久久久久久久久久| 欧美日韩在线播放| 国产乱子轮精品视频| 日韩小视频在线观看专区| 欧美一区二区三区四区在线观看地址| 国产精品网曝门| 99日韩精品| 日韩有码一区二区三区| 欧美日韩在线播放| 成人av资源在线| 国产精品污www在线观看| 中日韩男男gay无套| 日本亚洲欧美天堂免费| 欧美一区二区免费视频| 欧美精品一区二区视频| 亚洲综合在线五月| 免费成人性网站| 一区二区欧美在线观看| 亚洲综合日韩| 精品一区二区三区香蕉蜜桃| 日韩精品一区在线| 国模精品娜娜一二三区| 亚洲制服丝袜在线| 欧美色综合网站| 不卡一区二区三区四区| 久久久国产精品午夜一区ai换脸| 亚洲国产欧洲综合997久久| 亚洲午夜私人影院| 欧美日韩精品电影| 91麻豆swag| 亚洲国产日韩综合久久精品| 欧美日韩精品一区二区天天拍小说 | 成人免费看片app下载| 欧美日韩国产乱码电影| 亚洲精品美腿丝袜| 色综合久久99| 国产91富婆露脸刺激对白| 国产精品乱人伦中文| 久热这里只精品99re8久| 成人美女视频在线看| 亚洲精品高清在线观看| 欧美绝品在线观看成人午夜影视| 欧美久色视频| 日韩精品免费专区| 精品国产一二三区| 国产精品美女久久久| 国产成人亚洲综合a∨猫咪| 国产日韩欧美在线一区| 欧美亚洲视频| 成人小视频免费观看| 亚洲人成7777| 欧美日本精品一区二区三区| 国语精品一区| 国产在线播精品第三| 成人免费在线播放视频| 欧美日韩不卡在线| 一区三区视频| 国产精品正在播放| 亚洲精品第1页| 日韩美女一区二区三区| 午夜亚洲精品| 色综合天天综合网天天狠天天 | 日韩精品一区二区三区在线| 亚洲午夜精品国产| 麻豆精品在线视频| 国产精品久久久久aaaa樱花| 欧美老肥妇做.爰bbww视频| 亚洲精品麻豆| www.日韩大片| 日韩电影免费一区| 中文字幕在线不卡一区 | 777奇米四色成人影色区| 99国产精品自拍| 成人h动漫精品一区二区| 日日噜噜夜夜狠狠视频欧美人| 久久免费看少妇高潮| 久久aⅴ乱码一区二区三区| 欧美一区高清| 国产一区二区三区香蕉| 亚洲一区二区三区精品在线| 久久色在线视频| 欧美日韩亚洲丝袜制服| 国产精品乱子乱xxxx| 91蝌蚪porny九色| 韩国视频一区二区| 香蕉影视欧美成人| 国产精品久久久久影院色老大| 91精品国产综合久久久蜜臀粉嫩| 一本一本久久| 欧美一区激情视频在线观看| 国产精一区二区三区| 玉米视频成人免费看| 久久久久久久久久久99999| 欧美日韩不卡视频| 亚洲欧美成人| 国产精品国码视频| 不卡的电影网站| 久久精品99国产精品| 亚洲午夜激情网页| 国产精品国模大尺度视频| 日韩精品一区二区三区视频| 欧美日韩一级黄| 久久一区二区精品| 正在播放亚洲| 亚洲特级毛片| 91丨九色丨蝌蚪丨老版| 韩国av一区二区三区在线观看| 香蕉成人伊视频在线观看| 中文字幕av一区二区三区高| 欧美一卡2卡三卡4卡5免费| 校园激情久久| 亚洲国产影院| 色综合天天综合在线视频| 丁香五精品蜜臀久久久久99网站 | 欧美日韩精品伦理作品在线免费观看| 国产成人免费视频网站高清观看视频| 老司机午夜精品99久久| 亚洲精品欧美综合四区| 国产精品久久99| 国产精品国产三级国产aⅴ原创 | 亚洲码国产岛国毛片在线| 亚洲国产精品成人综合色在线婷婷| 亚洲精品在线电影| 日韩一卡二卡三卡四卡| 在线综合亚洲欧美在线视频| 欧美日韩一本到| 欧美午夜宅男影院| 久久久综合网站| 亚洲日本视频| 色综合色综合色综合色综合色综合| 国产一区不卡在线| 蜜臀久久99精品久久久久宅男| 亚洲午夜免费福利视频| 夜夜嗨av一区二区三区| 有码一区二区三区| 亚洲激情六月丁香| 亚洲精品国产无天堂网2021 | 激情亚洲综合在线| 日本免费新一区视频| 天天色天天爱天天射综合| 亚洲国产人成综合网站| 亚洲国产综合色| 亚洲电影第三页| 五月天亚洲精品| 免费在线观看一区| 老司机免费视频一区二区| 国内外成人在线视频| 国产成人免费视频网站 | 在线电影欧美成精品| 91精品中文字幕一区二区三区 | 日韩毛片精品高清免费| 亚洲精品视频在线看| 亚洲一区二区三区视频在线| 午夜精品一区二区三区电影天堂| 日韩电影在线观看电影| 激情综合五月婷婷| 国产成人免费在线观看不卡| 成人免费视频免费观看| 欧美1区3d| 亚洲日本免费| 久久激情视频| 欧美视频三区在线播放| 欧美一区二区成人| 2023国产精品视频| 中文字幕一区二区三区av| 一区二区欧美精品| 美女网站在线免费欧美精品| 国产精品综合一区二区三区|