请教一个动态Linq问题。
我现在有一个DataTable如下 private static DataTable CreateDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Clear();
dt.Columns.Add("ID");
dt.Columns.Add("ColA");
dt.Columns.Add("ColB");
dt.Columns.Add("ColC"); dt.Rows.Add(new string[] { "1", "Row1ColA", "Row1ColB", "Row1ColC" });
dt.Rows.Add(new string[] { "2", "Row2ColA", "Row2ColB", "Row2ColC" });
dt.Rows.Add(new string[] { "3", "Row3ColA", "Row3ColB", "Row3ColC" });
dt.Rows.Add(new string[] { "4", "Row4ColA", "Row4ColB", "Row4ColC" });
return dt;
}
我现在想进行动态的查询 id为1 OR 2的记录, DataTable dt = CreateDataTable();
List<int> IDs = new List<int> { 1,2 };
foreach (int i in IDs)
{
//how to?
}这是目前遇到的问题,动态查询还有其他问题,为表示诚意,待结贴后重新悬赏。
我现在有一个DataTable如下 private static DataTable CreateDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Clear();
dt.Columns.Add("ID");
dt.Columns.Add("ColA");
dt.Columns.Add("ColB");
dt.Columns.Add("ColC"); dt.Rows.Add(new string[] { "1", "Row1ColA", "Row1ColB", "Row1ColC" });
dt.Rows.Add(new string[] { "2", "Row2ColA", "Row2ColB", "Row2ColC" });
dt.Rows.Add(new string[] { "3", "Row3ColA", "Row3ColB", "Row3ColC" });
dt.Rows.Add(new string[] { "4", "Row4ColA", "Row4ColB", "Row4ColC" });
return dt;
}
我现在想进行动态的查询 id为1 OR 2的记录, DataTable dt = CreateDataTable();
List<int> IDs = new List<int> { 1,2 };
foreach (int i in IDs)
{
//how to?
}这是目前遇到的问题,动态查询还有其他问题,为表示诚意,待结贴后重新悬赏。
解决方案 »
- C# winform 绘制刻度表
- C#保持两个文件夹时时同步~~~
- 关于DataRow的问题
- 遍历数据表中的某一字段
- 如何在XML中创建一个这样的接点<?xml-stylesheet type="text/xsl" href="XSLTError1.xslt"?>
- WebServices中IDataParameter类型不能被序列化,还有其他方法吗
- 关于Desinger.cs
- vb.net和c# vs2010 事件下拉列表为什么一个有一个没有?
- 这个字典的值是什么?
- 因为在TextBox中输入的都是字符串,怎么转换成所需要的类型?
- winform 抽奖功能 点解一运行就死机
- 高分跪求一矩阵高效算法
{
DataTable tblDatas = new DataTable("Datas");
tblDatas.Columns.Add("ID", Type.GetType("System.Int32"));
tblDatas.Columns[0].AutoIncrement = true;
tblDatas.Columns[0].AutoIncrementSeed = 1;//设置列自增
tblDatas.Columns[0].AutoIncrementStep = 1; tblDatas.Columns.Add("Product", Type.GetType("System.String"));
tblDatas.Columns.Add("Version", Type.GetType("System.String"));
tblDatas.Columns.Add("Description", Type.GetType("System.String")); tblDatas.Rows.Add(new object[] { null, "a", "b", "c" });
tblDatas.Rows.Add(new object[] { null, "a", "b", "c" });
tblDatas.Rows.Add(new object[] { null, "a", "b", "c" });
tblDatas.Rows.Add(new object[] { null, "a", "b", "c" });
tblDatas.Rows.Add(new object[] { null, "a", "b", "c" }); return tblDatas;
}然后查询的话如下 DataTable dt = CreateDataTable();
List<int> IDs = new List<int> { 1, 2 };
string condition = string.Join(",",IDs);
condition = "ID IN (" + condition + ")";
var result=dt.Select(condition);//此时result包含两行,即ID为1和2的记录
var result = from a in dt.AsEnumerable()
from i in IDs
where Convert.ToInt32(a[0]) == i
//var result = from i in IDs
select a;
foreach (DataRow myre in result)
{
Console.WriteLine("{0} {1} {2} {3}",myre[0],myre[1],myre[2],myre[3]);
}
{
List<int> IDs = new List<int> { 1, 2 }; DataTable dt = CreateDataTable(); var data = from d in dt.AsEnumerable()
from id in IDs
where d.Field<string>("ID") == id.ToString()
select d;
data.ToList().ForEach(d => Console.WriteLine("ID:{0},ColA:{1},ColB:{2}", d.Field<string>("ID").ToString(), d.Field<string>("ColA").ToString(), d.Field<string>("ColB").ToString()));
}
private static DataTable CreateDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Clear();
dt.Columns.Add("ID");
dt.Columns.Add("ColA");
dt.Columns.Add("ColB");
dt.Columns.Add("ColC"); dt.Rows.Add(new string[] { "1", "Row1ColA", "Row1ColB", "Row1ColC" });
dt.Rows.Add(new string[] { "2", "Row2ColA", "Row2ColB", "Row2ColC" });
dt.Rows.Add(new string[] { "3", "Row3ColA", "Row3ColB", "Row3ColC" });
dt.Rows.Add(new string[] { "4", "Row4ColA", "Row4ColB", "Row4ColC" });
return dt;
}
1:ID为1或2
2:Col1字段包含“Col1”
现在CSDN越改越烂了,
回复都看不见了,
刷几次才出来
1和2是必须都满足,
还是只满足其一即可?
var result = dt.Select(condition);//此时result包含两行,即ID为1和2的记录
private static DataTable CreateDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Clear();
dt.Columns.Add("ID",typeof(int));
dt.Columns.Add("ColA");
dt.Columns.Add("ColB");
dt.Columns.Add("ColC"); dt.Rows.Add(new string[] { "1", "Row1ColA", "Row1ColB", "Row1ColC" });
dt.Rows.Add(new string[] { "2", "Row2ColA", "Row2ColB", "Row2ColC" });
dt.Rows.Add(new string[] { "3", "Row3ColA", "Row3ColB", "Row3ColC" });
dt.Rows.Add(new string[] { "4", "Row4ColA", "Row4ColB", "Row4ColC" });
return dt;
} DataTable dt = CreateDataTable();
List<int> IDs = new List<int> { 1,2 };
var newDT=dt.Where(t=>IDs.Contains(t.Field<int>("ID"))).CopyToDataTable();