我有一個通用的字串串列,但我知道有 12 到 12 個專案我有一個記錄。我還有一個想要填充的模型。
我的主要代碼
for (int r = 2; r <= rows; r )
{
for (int c = 3; c <= cols; c )
{
try
{
list.Add(usedRange.Cells[r, c].Value2.ToString());
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
}
foreach (string item in list)
{
}
所以在 foreach(串列中的字串專案)我知道 12 24 然后 36 我的記錄在那里
問題是代碼的這種和平
foreach (string item in list)
{
p.LastName = item
}
我需要一個for來用所有 12 個專案填充我的模型,我被卡住了
uj5u.com熱心網友回復:
您還可以for通過索引獲取每 12 個元素的專案,如下所示:
for (var i = 0; i < list.Count; i =12)
var p.LastName = list[i];
uj5u.com熱心網友回復:
如果您希望將串列分成 12 個元素的塊,您可以使用ChunkC# 10 中新增的Linq 擴展。如果您不使用 C# 10,則庫MoreLinq 中提供了一個等效項,它具有不同的名稱:Batch .
// Creating a sample list of dummy elements
// There will be 100 strings from "0" to "99".
var MyList = Enumerable.Range(0, 100)
.Select(i => $"{i}");
// Creating a list of chunks containing 12 elements
var ChunkedElements = MyList
.Chunk(12);
// Using the chunked list.
foreach (var chunk in ChunkedElements)
{
// Do what you want with the 12 elements
Console.WriteLine("New Chunk");
foreach(var e in chunk)
{
Console.WriteLine(e);
}
}
輸出:
New Chunk
0
1
2
3
4
5
6
7
8
9
10
11
New Chunk
12
13
14
15
16
17
18
19
20
21
22
23
New Chunk
24
25
26
27
28
29
30
31
32
33
34
35
New Chunk
36
37
38
39
40
41
42
43
44
45
46
47
New Chunk
48
49
50
51
52
53
54
55
56
57
58
59
New Chunk
60
61
62
63
64
65
66
67
68
69
70
71
New Chunk
72
73
74
75
76
77
78
79
80
81
82
83
New Chunk
84
85
86
87
88
89
90
91
92
93
94
95
New Chunk
96
97
98
99
如果您只需要第 12 個元素,這里是經典 for 回圈的 Linq 替代方案。它沒有好壞之分,但根據背景關系可能有用。
// Creating a sample list of dummy elements
// There will be 100 strings from "0" to "99".
var MyList = Enumerable.Range(0, 100)
.Select(i => $"{i}");
// Filtering the list to get only the 12th elements
var FilteredElements = MyList
.Where((e, i) => i % 12 == 0);
// Using the filtered list
foreach (var e in FilteredElements)
{
// Here do what you want with each element.
Console.WriteLine(e);
}
輸出:
0
12
24
36
48
60
72
84
96
解釋:
.Where((e, i) => i % 12 == 0)是作業完成的地方。linq 擴展方法Where有一個多載,它接受一個 Func<TSource, Int32, bool> 作為引數。請參閱檔案。第二個引數是集合元素的索引。
所以.Where((e, i) => i % 12 == 0)只保留集合中索引i可被 12 ( i % 12 == 0)整除的元素。因此結果只包含 12 的倍數。
uj5u.com熱心網友回復:
現在是這樣,但我會將其更改為更窒息的方法。
for (var i = 0; i < list.Count; i = 13)
{
p.Add(new Participants()
{
LastName = list[0 i],
FirstName = list[1 i],
AddressType = list[2 i],
Email = list[3 i],
Company = list[4 i],
Phone = list[5 i],
Street = list[6 i],
ZipCode = list[7 i],
City = list[8 i],
Country = list[9 i],
Percent = list[10 i],
Points = list[11 i],
Passed = list[12 i],
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/368115.html
