Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用where子句从datatable中选择_C#_Asp.net_Select_Datatable - Fatal编程技术网

C# 使用where子句从datatable中选择

C# 使用where子句从datatable中选择,c#,asp.net,select,datatable,C#,Asp.net,Select,Datatable,我试图从数据表中选择几行。我正在选择两列,如何在下面的语句中使用where子句 cars = new Head { heading = (string)dr["head"], subHeads = dt.Select(r => new SubHead { // how to use a where clause here? subHeading = (string)r["subhead"],

我试图从数据表中选择几行。我正在选择两列,如何在下面的语句中使用where子句

cars = new Head
{
    heading = (string)dr["head"],
    subHeads = dt.Select(r => new SubHead
    {                               // how to use a where clause here?
        subHeading = (string)r["subhead"],
        cars = dt.Select(r2 => new Cars
        {                           // how to use a where clause here?
            name = (string)r2["name"],
            quantity = (string)r2["qty"],
        }).ToList()
     }).ToList()
 };
你可以用

dt.where(e => {check something}).Select({select code here})

在两个地方都这样做。希望这能有所帮助。

在选择之前,您需要先调用Where。例如:

// Fill the DataSet.
DataSet ds = new DataSet();
ds.Locale = CultureInfo.InvariantCulture;
FillDataSet(ds);

var contacts = ds.Tables["Contact"].AsEnumerable();
var orders = ds.Tables["SalesOrderHeader"].AsEnumerable();

var query =
    contacts.SelectMany(
        contact => orders.Where(order =>
            (contact.Field<Int32>("ContactID") == order.Field<Int32>("ContactID"))
                && order.Field<decimal>("TotalDue") < 500.00M)
            .Select(order => new
            {
                ContactID = contact.Field<int>("ContactID"),
                LastName = contact.Field<string>("LastName"),
                FirstName = contact.Field<string>("FirstName"),
                OrderID = order.Field<int>("SalesOrderID"),
                Total = order.Field<decimal>("TotalDue")
            }));

foreach (var smallOrder in query)
{
    Console.WriteLine("Contact ID: {0} Name: {1}, {2} Order ID: {3} Total Due: ${4} ",
        smallOrder.ContactID, smallOrder.LastName, smallOrder.FirstName,
        smallOrder.OrderID, smallOrder.Total);
}
//填充数据集。
数据集ds=新数据集();
ds.Locale=CultureInfo.InvariantCulture;
数据集(ds);
var contacts=ds.Tables[“Contact”].AsEnumerable();
var orders=ds.Tables[“SalesOrderHeader”].AsEnumerable();
变量查询=
联系人。选择多个(
联系人=>订单。其中(订单=>
(contact.Field(“ContactID”)==order.Field(“ContactID”))
&&订单字段(“总到期日”)<500.00M)
.选择(订单=>新建)
{
ContactID=contact.Field(“ContactID”),
LastName=contact.Field(“LastName”),
FirstName=联系人字段(“FirstName”),
OrderID=order.Field(“SalesOrderID”),
总计=订单字段(“总到期日”)
}));
foreach(查询中的变量smallOrder)
{
WriteLine(“联系人ID:{0}姓名:{1},{2}订单ID:{3}到期总额:${4}”,
smallOrder.ContactID、smallOrder.LastName、smallOrder.FirstName、,
smallOrder.OrderID、smallOrder.Total);
}

摘自。

如何选择特定列?我想为可变子标题单独选择“子标题”列。我在第4行添加了“.Select(c=>c.Field(“subhead”)”),但它在第6行抛出了错误“与'string.this[int]”匹配的最佳重载方法有一些无效参数”。请帮助.cars=newhead{heading=(string)dr[“Head”],subHeads=dt.Select(c=>c.Field(“subhead”)).Select(r=>newsubhead{//where子句在这里如何使用?subHeading=(string)r[“subhead”],cars=dt.Select(r2=>newcars{//如何在此处使用where子句?名称=(字符串)r2[“名称”],数量=(字符串)r2[“数量”],}.ToList()}.ToList()};