让我们列出你发布优秀和最喜欢的扩展方法的答案.
要求是必须发布完整代码并提供示例和如何使用它的说明.
基于对该主题的高度关注,我在Codeplex上设置了一个名为extensionoverflow的开源项目.
请标记您的答案并接受将代码放入Codeplex项目中.
请发布完整的源代码而不是链接.
Codeplex新闻:
24.08.2010 Codeplex页面现在在这里:http://extensionoverflow.codeplex.com/
11.11.2008 XmlSerialize/XmlDeserialize现在已实现并且已经过单元测试.
11.11.2008仍有更多开发人员的空间.;-) 现在加入!
11.11.2008第三个贡献者加入了ExtensionOverflow,欢迎来到BKristensen
11.11.2008 FormatWith现在已实现且已经过单元测试.
09.11.2008第二个贡献者加入了ExtensionOverflow.欢迎来到chakrit.
09.11.2008我们需要更多开发人员.;-)
我是全新的LINQ,我试图DataSet用它来查询我.所以我按照这个例子写了这封信,它不起作用.
我知道我的DataTable需要.AsEnumerable最终,但它不被承认IDE.我究竟做错了什么?我错过了示例中未显示的引用/导入(这不是第一次MSDN示例不太正确),如果是,那么哪一个?还是完全不同的东西?
示例代码:
Imports System
Imports System.Linq
Imports System.Linq.Expressions
Imports System.Collections.Generic
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.Common
Imports System.Globalization
//Fill the DataSet.
Dim ds As New DataSet()
ds.Locale = CultureInfo.InvariantCulture
//See the FillDataSet method in the Loading Data Into a DataSet topic.
FillDataSet(ds)
Dim products As DataTable = ds.Tables("Product")
Dim query = From product In products.AsEnumerable() _
Select product
Console.WriteLine("Product Names:")
For Each p In query
Console.WriteLine(p.Field(Of String)("Name")) …Run Code Online (Sandbox Code Playgroud) 我正在将我的数据表转换为c#通用列表.
DataTable dt = mydata();
List<DataRow> list = dt.AsEnumerable().ToList();
Run Code Online (Sandbox Code Playgroud)
现在我如何list使用json.net 将其转换为json?任何建议.
json格式的样本应该是这样的,
{"Table" : [{"userid" : "1","name" : "xavyTechnologies","designation" : "",
"phone" : "9999999999","email" : "test@test.com","role" : "Admin","empId" : "",
"reportingto" : ""},{"userid" : "2","name" : "chendurpandian","designation" :
"softwaredeveloper","phone" : "9566643707","email" : "chendur.pandia@gmail.com",
"role" : "Super User","empId" : "1","reportingto" : "xavyTechnologies"},
{"userid" : "3","name" : "sabarinathan","designation" : "marketer","phone" :
"66666666666","email" : "bala3569@gmail.com","role" : "User",
"empId" : "2","reportingto" : "chendurpandian"}]}
Run Code Online (Sandbox Code Playgroud) 前言:
我正在将DbDataReader映射到实体并具有一些基准:
[0] retrieved 159180 records in 45135 ms
[1] retrieved 159180 records in 45008 ms
[2] retrieved 159180 records in 44814 ms
[3] retrieved 159180 records in 44987 ms
[4] retrieved 159180 records in 44914 ms
[5] retrieved 159180 records in 45224 ms
[6] retrieved 159180 records in 45829 ms
[7] retrieved 159180 records in 60762 ms
[8] retrieved 159180 records in 52128 ms
[9] retrieved 159180 records in 47982 ms
Run Code Online (Sandbox Code Playgroud)
考虑到从Sql Server Management Studio查询只需要17秒,这是一个非常大的时间和极差.我的选择声明:
"SELECT*FROM tbl_MyTable" …
我有以下代码可以读取一个大文件,比如超过一百万行。我正在使用 Parallel 和 Linq 方法。有没有更好的方法来做到这一点?如果是,那么如何?
private static void ReadFile()
{
float floatTester = 0;
List<float[]> result = File.ReadLines(@"largedata.csv")
.Where(l => !string.IsNullOrWhiteSpace(l))
.Select(l => new { Line = l, Fields = l.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) })
.Select(x => x.Fields
.Where(f => Single.TryParse(f, out floatTester))
.Select(f => floatTester).ToArray())
.ToList();
// now get your totals
int numberOfLinesWithData = result.Count;
int numberOfAllFloats = result.Sum(fa => fa.Length);
MessageBox.Show(numberOfAllFloats.ToString());
}
private static readonly char[] Separators = { ',', ' ' };
private static void ProcessFile() …Run Code Online (Sandbox Code Playgroud) 我有一个疑问,有时我将此转换DataTable为List<T>:
List<EDog> lstDogs = (from drRow in dsDogs.Tables[0].AsEnumerable()
select new EDog()
{
intIdDog = drRow.Field<int>("IdDog"),
intIdOwner = drRow.Field<int?>("IdOwner"),
intAge = drRow.Field<int>("Age"),
strName = drRow.Field<string>("Name")
}).ToList();
Run Code Online (Sandbox Code Playgroud)
这工作正常,但现在我正在考虑将它做为通用,以便任何类型的DataSet都可以转换为强类型列表.
我怎么能把它变成通用的呢?也许围绕这部分并创建对象的代表?
new EDog()
{
intIdDog = drRow.Field<int>("IdDog"),
intIdOwner = drRow.Field<int?>("IdOwner"),
intAge = drRow.Field<int>("Age"),
strName = drRow.Field<string>("Name")
}
Run Code Online (Sandbox Code Playgroud)
我试了但是得到了一个错误:
select (lambda) expected....
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
我之所以需要这个,是因为结果的每个DataRow都需要转换为Entity以便更好地操作.
我有一个返回数据表的数据层选择方法.它是从业务层方法调用的,然后应该返回强类型的通用List.
我想做的是非常相似(但不一样)这个问题:
如何将DataTable转换为通用列表?
有什么不同之处在于我希望列表包含强类型对象而不是数据行(同样,我还没有这里可用的linq).
我很关心表现.然后将从表示层调用业务层方法,并且将迭代结果以显示给用户.在业务层添加额外的迭代似乎非常浪费,只能立即再次进行演示,所以我希望尽可能快.
这是一个常见的任务,所以我真的在寻找一个可以反复重复的好模式.
我需要将 C# DataTable 转换为通用集合列表
DataTable Columns Respectively
1. EmpId (this is Int DataType)
2. EmpName (this is varchar DataType)
3. EmpAddress (this is varchar DataType)
4. EmpPhone (this is varchar DataType)
5. Status (this is Boolean DataType)
6. EmpRelationKey (this is int DataType)
Run Code Online (Sandbox Code Playgroud)
所以我的数据表包含上述字段的值。在这里我需要将此值分配到我的列表中
我的列表变量分别
class Employee
{
protected int EmpId ;
protected string EmpName =String.Empty;
protected string EmpAddress = String.Empty;
protected string EmpPhone = String.Empty;
protected bool Status ;
protected int EmpRelationKey ;
}
Declaring List
List<Employee> Emp= new …Run Code Online (Sandbox Code Playgroud) 我用答案查看了回答的主题:List list = dt.AsEnumerable().ToList();
但是,如果想转换为某些实体类型的列表呢?例如,我有一个实体类Property:
public class Property
{
public int ID { get; set; }
public string Chain { get; set; }
public string Name { get; set; }
public string Street { get; set; }
public string Street2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string PostalCode { get; set; }
public string Country { get; set; }
public string Phone { get; set; …Run Code Online (Sandbox Code Playgroud) 在给定的代码中,我编写了 lambda 表达式,但它显示了一个错误 -- 无法将 lambda 表达式转换为类型“string”,因为它不是委托类型。
EmployeeDataOperation emp = new EmployeeDataOperation(); //Class to perform CRUD operation.
List<EmployeeProp> data = new List<EmployeeProp>();
dt = emp.getEmployeeData();//return datatable with records.
//I want to use lambda expression to use Datatable data as a list
data = (from a in dt
select new EmployeeProp { Name = a.Name, Email = a.Email }).ToList();
//error near select
return View(data);
Run Code Online (Sandbox Code Playgroud) 我需要在C#上使用公共列合并/连接数据表.
我知道很多例子以及有关同一主题的问题.我没有找到任何回答我的问题.
以下是我正在使用的代码.
该代码仅允许基于on datatable数据的一个公共列.我需要一个公共列,但需要考虑任何其他"帐户#"可以在另一个数据表中使用并将其添加到公共列中.
此外,代码仅允许合并2个数据表.我需要合并31个数据表,以便为每个月的每一天合并1个数据表.
我有一个月的每一天的数据表,dt_docDAY01,dt_docDAY02,dt_docDAY03等.
每个数据表包含一个帐号"帐号#"和一个存储在一列中的余额,参考当天"DAY01","DAY02"等.
你能告诉我如何更改代码,以便我将包括所有表中的所有帐户.
另外,我将如何合并此代码中的所有数据表,所以我不必运行相同的代码31次.
'string id ="帐号#";
var tableJoinedDAY02 = dt_docDAY01_GROUPED.Clone(); // create columns from table1
// add columns from table2 except id
foreach (DataColumn column in dt_docDAY02_GROUPED.Columns)
{
if (column.ColumnName != id)
tableJoinedDAY02.Columns.Add(column.ColumnName, column.DataType);
}
tableJoinedDAY02.BeginLoadData();
foreach (DataRow row1 in dt_docDAY01_GROUPED.Rows)
{
foreach (DataRow row2 in dt_docDAY02_GROUPED.Rows)
{
if (row1.Field<string>(id) == row2.Field<string>(id))
{
var list = row1.ItemArray.ToList(); // items from table1
// add items from table2 except id
foreach (DataColumn column in dt_docDAY02_GROUPED.Columns) …Run Code Online (Sandbox Code Playgroud) 我在这里回顾了答案:
但它们对我的特定用例没有帮助.我正在从SQL数据适配器检索DataTable,并希望将DataTable转换为List(这很容易),然后将List序列化为JSON(使用JSON.net,这很容易).
问题是我似乎必须使用List.好的,很好 - 所以我有这个代码:
DataTable result = GoMagicallyGatherSomeData();
List<DataRow> ret = new List<DataRow>();
if (result != null && result.Rows.Count > 0)
{
foreach (DataRow curr in result.Rows)
{
ret.Add(curr);
}
}
Run Code Online (Sandbox Code Playgroud)
要么
DataTable result = GoMagicallyGatherSomeData();
List<DataRow> ret = result.AsEnumerable().ToList();
Run Code Online (Sandbox Code Playgroud)
当我去序列化List时,它......不是我所期望的.
我想回来的是:
[
{
"TestId":1,
"AccountId":1,
"SomeString":"This is an updated test",
"SomeTimestamp":"2016-01-01T00:00:00Z",
"SomeDecimal":5.55
},
{
"TestId":3,
"AccountId":1,
"SomeString":"This is a third test",
"SomeTimestamp":"2016-01-01T00:00:00Z",
"SomeDecimal":5.55
},
{ ... removed for brevity ... }
]
Run Code Online (Sandbox Code Playgroud)
而我实际得到的是: …
c# ×10
.net ×5
datatable ×4
generics ×3
ado.net ×2
dataset ×2
json ×2
linq ×2
.net-2.0 ×1
asp.net ×1
asp.net-mvc ×1
datareader ×1
json.net ×1
list ×1
open-source ×1
performance ×1
reflection ×1