Tôi có một List
chứa tất cả các tên cơ sở dữ liệu. Tôi phải dispaly các mục có trong danh sách đó trong giao diện điều khiển (sử dụng Console.WriteLine()
). Làm thế nào tôi có thể đạt được điều này?Cách hiển thị các mục danh sách trên cửa sổ bảng điều khiển trong C#
Trả lời
Giả sử các mặt hàng ghi đè ToString
một cách thích hợp:
public void WriteToConsole(IEnumerable items)
{
foreach (object o in items)
{
Console.WriteLine(o);
}
}
(Sẽ có không có lợi thế trong việc sử dụng Generics trong vòng lặp này - chúng tôi muốn kết thúc cuộc gọi Console.WriteLine(object)
anyway, do đó nó vẫn sẽ hộp giống như nó trong phần foreach
trong trường hợp này.)
EDIT: Câu trả lời bằng cách sử dụng là rất tốt.
Vòng lặp của tôi ở trên linh hoạt hơn trong trường hợp bạn có một chuỗi tùy ý (ví dụ như kết quả của biểu thức LINQ), nhưng nếu bạn chắc chắn có List<T>
Tôi muốn nói rằng là một lựa chọn tốt hơn.
Một lợi thế của là nếu bạn có loại danh sách cụ thể, nó sẽ sử dụng quá tải thích hợp nhất. Ví dụ:
List<int> integers = new List<int> { 1, 2, 3 };
List<string> strings = new List<string> { "a", "b", "c" };
integers.ForEach(Console.WriteLine);
strings.ForEach(Console.WriteLine);
Khi viết ra các số nguyên, điều này sẽ sử dụng Console.WriteLine(int)
, trong khi đó khi viết ra các dây nó sẽ sử dụng Console.WriteLine(string)
. Nếu không có quá tải cụ thể có sẵn (hoặc nếu bạn chỉ đang sử dụng chung List<T>
và trình biên dịch không biết T
là gì), nó sẽ sử dụng Console.WriteLine(object)
.
Lưu ý việc sử dụng Console.WriteLine
làm nhóm phương pháp, tiện thể. Điều này ngắn gọn hơn bằng cách sử dụng biểu thức lambda và thực tế là hơi hiệu quả hơn (vì đại biểu sẽ chỉ gọi là gọi tới Console.WriteLine
, thay vì gọi đến phương thức mà chỉ cần gọi Console.WriteLine
).
Bạn cũng có thể sử dụng foreach inbuilt Danh sách, chẳng hạn như:
List<T>.ForEach(item => Console.Write(item));
Mã này cũng chạy
đáng kể
nhanh hơn!
Đoạn mã trên cũng làm cho bạn có thể thao tác Console.WriteLine, chẳng hạn như thực hiện:
List<T>.ForEach(item => Console.Write(item + ",")); //Put a,b etc.
* Đáng kể * nhanh hơn? Điều đó nghe có vẻ rất khó xảy ra với tôi, vì nút cổ chai sẽ là đầu ra của bàn điều khiển thay vì lặp lại. –
haha Tôi có thể lấy từ đó ra. Đó là chỉ vì Danh sách
Có - nó chắc chắn hiệu quả hơn, chỉ không đáng kể. Nó luôn luôn có giá trị trong tâm trí nơi các nút cổ chai thực sự là :) Bạn có thể làm cho phiên bản đầu tiên thậm chí hiệu quả hơn bằng cách sử dụng Console.Write như một nhóm phương pháp, btw ... (Bạn không thể làm điều đó với thứ hai, như bạn đang thực sự thao tác tham số.) –
Trên thực tế bạn có thể làm điều đó khá đơn giản, kể từ khi danh sách có một phương pháp ForEach
và vì bạn có thể vượt qua trong Console.WriteLine
như một nhóm phương pháp. Trình biên dịch sau đó sẽ sử dụng một chuyển đổi ngầm để chuyển đổi các nhóm phương pháp để, trong trường hợp này, một Action<int>
và chọn phương pháp cụ thể nhất từ nhóm, trong trường hợp này `Console.WriteLine (int):
var list = new List<int>(Enumerable.Range(0, 50));
list.ForEach(Console.WriteLine);
trình với chuỗi quá =)
Để hoàn toàn là người theo dõi (và tôi không đề xuất thay đổi câu trả lời của bạn - chỉ cần nhận xét vì lợi ích) "Console.WriteLine" là nhóm phương pháp. Trình biên dịch sau đó sử dụng một chuyển đổi ẩn từ nhóm phương thức thành Hành động, chọn phương thức cụ thể nhất (Console.WriteLine (int) trong trường hợp này).
Để hoàn toàn là người theo dõi (và tôi không đề xuất thay đổi cho câu trả lời của bạn - chỉ cần bình luận vì lợi ích) "Console.WriteLine" là một nhóm phương pháp. Trình biên dịch sau đó sử dụng một chuyển đổi ẩn từ nhóm phương thức thành Hành động
Vâng, như tôi đã nói, "nếu tôi nhận được từ ngữ của tôi đúng": p Cập nhật câu trả lời (cho tôi biết nếu tôi nhận lại sai!) – Svish
Console.WriteLine(string.Join<TYPE>("\n", someObjectList));
Điều này phù hợp nhất với tôi khi tôi có thể chuẩn bị chuỗi của mình trước khi gửi nó đến bảng điều khiển , thay vì gửi một dòng đến bàn điều khiển mỗi lần – Mart10
Mặc dù câu trả lời với rất tốt.
Tôi đã tìm thấy phương thức String.Join<T>(string separator, IEnumerable<T> values)
hữu ích hơn.
Ví dụ:
List<string> numbersStrLst = new List<string>
{ "One", "Two", "Three","Four","Five"};
Console.WriteLine(String.Join(", ", numbersStrLst));//Output:"One, Two, Three, Four, Five"
int[] numbersIntAry = new int[] {1, 2, 3, 4, 5};
Console.WriteLine(String.Join("; ", numbersIntAry));//Output:"1; 2; 3; 4; 5"
Ghi chú:
Nếu tách là rỗng, một chuỗi rỗng (String.Empty
) được sử dụng để thay thế. Nếu bất kỳ thành viên nào có giá trị là null, một chuỗi trống sẽ được sử dụng thay thế.
Join(String, IEnumerable<String>)
là một phương pháp tiện lợi cho phép bạn ghép nối từng phần tử trong bộ sưu tập IEnumerable (Of String) mà không chuyển đổi phần tử thành mảng chuỗi đầu tiên. Nó đặc biệt hữu ích với các biểu thức truy vấn Language-Integrated Query (LINQ).
Điều này sẽ hoạt động tốt cho vấn đề, trong khi đối với những người khác, có giá trị mảng. Sử dụng quá tải khác của phương pháp này tương tự, String.Join Method (String, Object[])
tham khảo: https://msdn.microsoft.com/en-us/library/dd783876(v=vs.110).aspx
Tôi thấy điều này dễ hiểu:
List<string> names = new List<string> { "One", "Two", "Three", "Four", "Five" };
for (int i = 0; i < names.Count; i++)
{
Console.WriteLine(names[i]);
}
- 1. Tắt hiển thị cửa sổ bảng điều khiển
- 2. Hiển thị/Ẩn cửa sổ bảng điều khiển của ứng dụng giao diện điều khiển C#
- 3. GCC/C cách ẩn cửa sổ bảng điều khiển?
- 4. Ẩn cửa sổ bảng điều khiển từ Process.Start C#
- 5. Gỡ lỗi C++/SDL với cửa sổ bảng điều khiển
- 6. Điều khiển hiển thị trên một bảng điều khiển khác
- 7. tiêu đề cửa sổ bảng điều khiển c
- 8. Tôi có thể hiển thị các điều khiển cửa sổ của người dùng bên trong IE8
- 9. Điền các tệp vào hộp danh sách từ thư mục trong các cửa sổ C#
- 10. Bảng điều khiển JQueryMobile - cách luôn hiển thị trên các trang rộng
- 11. Linux: cách nhận danh sách tất cả các cửa sổ hiển thị
- 12. Tìm các thành phần trên mẫu cửa sổ C# (không điều khiển)
- 13. Đặt thuộc tính tùy chỉnh trên mục danh sách trong điều khiển chọn HTML (.NET/C#)
- 14. Modal Dialog không hiển thị trên các cửa sổ khác
- 15. Ứng dụng Giao diện điều khiển .Net không hiển thị Bảng điều khiển
- 16. dòng bốc thăm vào bảng điều khiển không hiển thị
- 17. Ẩn và hiển thị bảng điều khiển với jQuery
- 18. node.js hiển thị "không xác định" trên bảng điều khiển
- 19. Nhúng cửa sổ Bảng điều khiển bên trong Cửa sổ WPF
- 20. cách cập nhật các mục trong một mảng/danh sách với trình điều khiển mongo C#?
- 21. Danh sách WPF Luôn hiển thị các mục hoàn chỉnh
- 22. WPF: Cách tạo bảng điều khiển các mục tùy chỉnh?
- 23. Các mục danh sách nhiều dòng trên điều khiển ListView WinForms?
- 24. Làm cách nào tôi có thể ghi vào cửa sổ bảng điều khiển để gỡ lỗi?
- 25. Có cách nào để hiển thị các điều khiển WPF trên đầu trang của điều khiển wpf WebBrowser không?
- 26. Cách thêm UserControl vào Bảng điều khiển trên Cửa sổ WPF
- 27. IcedTea - cách hiển thị bảng điều khiển applet ..?
- 28. Hiển thị danh sách gỡ lỗi (hoặc in ra cửa sổ ngay)
- 29. Java Swing - cách hiển thị bảng điều khiển ở đầu bảng khác?
- 30. cập nhật cửa sổ bảng điều khiển với java
Làm thế nào để sử dụng cho các loại đối tượng phức tạp nói Danh sách nơi Người chỉ chứa thuộc tính chuỗi . –
Koder101
@ Koder101: Bạn có thể muốn ghi đè 'ToString' trong' Person'. –