//自分で試してみた方法
var arr = new[]{"1","2","3","4"};
var query = from data in getDt.AsEnumerable()
where data["仕様2"].ToString() == "LDWS" &&
data["項目"].ToString() == "PNFV" &&
data["パーツ名称_No"].ToString() == "FLD1" &&
data["詳細項目_No"] == arr
select data;
ありがとうございます。
追記通りに以下の修正をすると無事やりたいことができました。
for (int n = 0; n <= 3; n++)
{
var query = from data in getDt.AsEnumerable()
where data["仕様2"].ToString() == "LDWS" &&
data["項目"].ToString() == "PNFV" &&
data["パーツ名称_No"].ToString() == "FLD1" &&
Enumerable.Range(1, n + 1).Select(i => i.ToString()).Contains(data["詳細項目_No"].ToString())
select data;
foreach (var dr in drs)
{
//itemの処理
}
}
0
この数値を抽出条件に加える時、たとえば1からnまで指定したい場合
思いつきレベルなのでハズレかもしれませんが、以下のようにしてできないですか?
(data["詳細項目_No"] >= 1 && data["詳細項目_No"] <= n)
【追伸】
コメントに書きましたが、検証に使ったサンプルをアップしておきます。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleAppLinq2
{
class Program
{
// データソース用の DataTable を作成
protected DataTable CreateDataSource()
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("ID", typeof(Int32)));
dt.Columns.Add(new DataColumn("Name", typeof(string)));
dt.Columns.Add(new DataColumn("Type", typeof(string)));
dt.Columns.Add(new DataColumn("Price", typeof(Int32)));
dt.Columns.Add(new DataColumn("Qty", typeof(Int32)));
dt.Columns.Add(new DataColumn("Amount", typeof(Int32)));
dt.Columns.Add(new DataColumn("CategoryID", typeof(Int32)));
dt.Columns.Add(new DataColumn("Note", typeof(string)));
dt.Columns.Add(new DataColumn("Discontinued", typeof(bool)));
dt.Columns.Add(new DataColumn("DateTime", typeof(DateTime)));
for (int i = 0; i < 25; i++)
{
dr = dt.NewRow();
dr["ID"] = i;
dr["Name"] = "Product Name_" + i.ToString();
dr["Type"] = "Product Type " + (100 - i).ToString();
dr["Price"] = 123000 * (i + 1);
dr["Qty"] = (i + 1) * 20;
dr["Amount"] = 123000 * (i + 1) * (i + 1);
dr["CategoryID"] = 100 - i;
dr["Note"] = "Note_" + i.ToString();
dr["Discontinued"] = (i % 2 == 0) ? true : false;
dr["DateTime"] = DateTime.Now.AddDays(i);
dt.Rows.Add(dr);
}
return dt;
}
static void Main(string[] args)
{
Program prg = new Program();
DataTable getDt = prg.CreateDataSource();
int n = 5;
var query = from data in getDt.AsEnumerable()
where ((int)data["ID"] >=1 && (int)data["ID"] <= n)
select data;
foreach (DataRow row in query)
{
Console.WriteLine("ID: {0}, Name: {1}, Type: {2}, Price: {3}",
row["ID"], row["Name"], row["Type"], row["Price"]);
}
/*
結果は:
ID: 1, Name: Product Name_1, Type: Product Type 99, Price: 246000
ID: 2, Name: Product Name_2, Type: Product Type 98, Price: 369000
ID: 3, Name: Product Name_3, Type: Product Type 97, Price: 492000
ID: 4, Name: Product Name_4, Type: Product Type 96, Price: 615000
ID: 5, Name: Product Name_5, Type: Product Type 95, Price: 738000
*/
}
}
}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/09/23 09:36
2016/09/23 09:38
退会済みユーザー
2016/09/23 09:52 編集