我在数据表中有两列:
ID, Calls.
Run Code Online (Sandbox Code Playgroud)
我怎样才能找到Calls的价值where ID = 5?
5可以是任何数字,例如它.每行都有一个唯一的ID.
我刚刚开始阅读LINQ,我想开始将它合并到我的代码中.我知道如何通过"Foreach" - 通过行或通过在特定列上执行compute.sum来计算DataTable列的总和.如何使用LINQ to DataSet进行等效操作?
一旦编辑了一个单元格,我就很难重新渲染PrimeFaces Datatable.更改一个单元格中的值可能会更改其他单元格中的条目,因此需要刷新整个表格.
这是JSF页面:
<h:form id="testForm">
<p:outputPanel id="testContainer">
<p:dataTable id="testTable" value="#{tableBean.data}" var="entry" editable="true" editMode="cell">
<p:ajax event="cellEdit" listener="#{tableBean.onCellEdit}" update=":testForm:testContainer" />
<p:column headerText="Col1">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{entry.col1}" /></f:facet>
<f:facet name="input"><p:inputText value="#{entry.col1}" /></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Col2">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{entry.col2}" /></f:facet>
<f:facet name="input"><p:inputText value="#{entry.col2}" /></f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>
<p:commandButton id="refreshButton" value="Redisplay" update="testContainer" />
</p:outputPanel>
</h:form>
Run Code Online (Sandbox Code Playgroud)
这是支持bean:
@ManagedBean(name = "tableBean", eager = false)
@ViewScoped
public class TableBean {
public TableBean() {
RowData entry = new RowData("a1", "b1");
entries.add(entry);
entry = new RowData("a2", "b2");
entries.add(entry); …Run Code Online (Sandbox Code Playgroud) 我有一个包含30多列和6500多行的DataTable.我需要将整个DataTable值转储到Excel文件中.任何人都可以帮助使用C#代码.我需要将每个列值放在一个单元格中.准确地说,我需要Excel文件中DataTable的精确副本.请帮助.
谢谢,Vix
如何将列表转换为数据表
[Serializable]
public class Item
{
public string Name { get; set; }
public double Price { get; set; }
public string @URL { get; set; }
public Item(string Name, string Price, string @URL)
{
this.Name = Name;
this.Price = Convert.ToDouble(Price);
this.@URL = @URL;
}
public override string ToString()
{
return this.Name;
}
}
Run Code Online (Sandbox Code Playgroud)
我试过用:
static DataTable ConvertToDatatable(List<Item> list)
{
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("Price");
dt.Columns.Add("URL");
foreach (var item in list)
{
dt.Rows.Add(item.Name, Convert.ToString(item.Price), item.URL);
}
return dt; …Run Code Online (Sandbox Code Playgroud) 有没有办法在C#中的DataTable中找到一个值而不进行逐行操作?
该值可以是([columnName] .value的子字符串,以逗号分隔)数据表中的单元格的一部分,并且该值可以出现在该行的任何一列中.
我正在使用数据绑定Windows窗体DataGridView.如何从用户选择的行走在DataGridView到DataRow的DataTable是它的来源?
考虑以下代码:
Dataview someView = new DataView(sometable)
someView.RowFilter = someFilter;
if(someView.count > 0) { …. }
Run Code Online (Sandbox Code Playgroud)
有很多文章说Datatable.Select()比使用DataViews更好,但这些文章优于VS2008.
解决:DataView的大型记录集性能不佳之谜 DataRecord与DataView的数据:性能的巨大
差异
谷歌搜索这个主题我发现一些文章/论坛主题提到Datatable.Select()本身是非常错误(不确定)和各种情况下表现不佳.
在msdn 上的这个(Best Practices ADO.NET)主题中,建议如果在数据表上定义了主键,则应使用findows()或find()方法,并使用Datatable.Select().
本文在这里(.NET 1.1)基准所有这三种方法加上一对夫妇更.但是这是针对1.1版的,所以不确定这些是否仍然有效.对此DataRowCollection.Find()的执行优于所有方法,Datatable.Select()优于DataView.RowFilter.
所以我对在数据表中查找行的最佳方法感到困惑.或者没有一种好的方法可以做到这一点,根据场景存在多种解决方案?
我已经开发了一个可以在任何地方返回DataTable的应用程序.
现在我的客户端想要转换(使用服务堆栈使用某些部分),所以我需要在我的应用程序中返回DTO(对象).
我不想更改现有的存储过程,甚至不想尽可能多地使用LINQ(我对LINQ并不太了解).
对于小功能,我可以使用Linq没问题.
我的问题是:我如何改变我DataTable对该类的对象?
示例代码如下
string s = DateTime.Now.ToString();
DataTable dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("name");
for (int i = 0; i < 5000000; i++)
{
DataRow dr = dt.NewRow();
dr["id"] = i.ToString();
dr["name"] = "name" + i.ToString();
dt.Rows.Add(dr);
dt.AcceptChanges();
}
List<Class1> clslist = new List<Class1>();
for (int i = 0; i < dt.Rows.Count; i++)
{
Class1 cls = new Class1();
cls.id = dt.Rows[i]["id"].ToString();
cls.name = dt.Rows[i]["name"].ToString();
clslist.Add(cls);
}
Response.Write(s);
Response.Write("<br>");
Response.Write(DateTime.Now.ToString());
Run Code Online (Sandbox Code Playgroud)
我知道,上面是耗时的,所以我试图找到一个替代解决方案.
有没有其他方法(我猜,LINQ to DataTable),通过它直接将表行转换为DTO …
我想知道如何将DataTable转换为Dictionary.我做了这样的事.
using System.Linq;
internal Dictionary<string,object> GetDict(DataTable dt)
{
return dt.AsEnumerable()
.ToDictionary<string, object>(row => row.Field<string>(0),
row => row.Field<object>(1));
}
Run Code Online (Sandbox Code Playgroud)
但我得到:
System.Data.EnumerableRowCollection不包含'ToDictionary'的定义和最佳扩展方法重载'System.Linq.Parallel.Enumerable.ToDictionary(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComrparer)'有一些无效的争论
我该如何解决这个问题?
谢谢
datatable ×10
c# ×8
linq ×3
.net ×2
ado.net ×2
asp.net ×2
datagridview ×1
datarow ×1
dictionary ×1
enumerable ×1
excel ×1
export ×1
jsf ×1
performance ×1
primefaces ×1
sum ×1
winforms ×1