一個簡單的 LINQ 請求的小問題。這是我第一次使用 LINQ,但仍然不了解所有機制。
我的結構是這樣的
List<string> baseData = new List<string>{"\"10\";\"Texte I need\";\"Texte\"",
"\"50\";\"Texte I need\";\"Texte\"",
"\"1000\";\"Texte I need\";\"Texte\"",
"\"100\";\"Texte I need\";\"Texte\""};
每行資料由欄位分隔符“;”構成 并且每個欄位都用引號“。
我有另一個 List Compose 值,我必須在我的第一個串列中找到。而且我有我必須搜索的位置。因為“我需要的文本”可以等于我正在搜索的值
List<string> valueINeedToFind = new List<string>{"50","100"};
char fieldSeparator = ';';
int fieldPositionInBaseDataForSearch = 0;
int fieldPositionInBaseDataToReturn = 1;
我做了第一個 Linq,只提取我感興趣的 Line。
List<string> linesINeedInAllData = baseData.Where(Line => valueINeedToFind.Any(Line.Split(fieldSeparator)[fieldPositionInBaseDataForSearch].Trim('"').Contains)).ToList();
這第一個請求作業得很好,現在我只有對資料線感興趣。
我的問題是我不想要所有行,但只需要位置 FieldPositionInBaseDataToReturn 中值“我需要的文本”的串列。
我必須制作另一個 LINQ 或者我可以修改我的第一個以直接獲得我需要的東西嗎?
uj5u.com熱心網友回復:
由于您將多次使用每行的拆分版本,因此將Split操作分開,然后處理結果陣列:
List<string> linesINeedInAllData = baseData.Select(Line => Line.Split(fieldSeparator))
.Where(splitLine => valueINeedToFind.Any(splitLine[fieldPositionInBaseDataForSearch].Trim('"').Contains))
.Select(splitLine => splitLine[fieldPositionInBaseDataToReturn])
.ToList();
uj5u.com熱心網友回復:
List<string> linesINeedInAllData = baseData.Where(Line => valueINeedToFind.Any(Line.Split(fieldSeparator)[fieldPositionInBaseDataForSearch].Trim('"').Equals)).ToList()
.Select(Line => Line.Split(fieldSeparator)[fieldPositionInBaseDataToReturn].Trim('"').ToList();
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/454023.html
