Linq:有没有特定的方法来运行查询?

时间:2015-12-09 15:20:11

标签: c# excel linq linq-to-excel

我想知道如果我有一个excel文件,并且我试图通过linq查询获取数据,这是否可行?

Excel文件格式

+-----------------+-------------+
| Inputlocation   | Inputvalue  |
+-----------------+-------------+
| 1               | Hello       |
+-----------------+-------------+
| 2               | World!!!    |
+-----------------+-------------+

现在如果我使用Linq查询,则可以获得Inputvalue数据

var fileName = @"C:\Users\jshah\Documents\Visual Studio 2013\Projects\QA_ExpScript\QA_ExpScript\Excel\Inputdata.xls";
string sheetName = "Input";
var book = new LinqToExcel.ExcelQueryFactory(fileName);
var users = from x in book.Worksheet(Input) select x;
foreach (var x in users)
{
    Console.WriteLine(x["1"]);
}

我想在这里做的是inputlocation是“1”给我Inputvalue是“你好”。我是否以正确的方式指定查询?我也在后面的代码中一次又一次地使用它。所以请为此提供更好的解决方案。

2 个答案:

答案 0 :(得分:1)

您可以使用where子句过滤数据,如下所示: -

var users = from x in book.Worksheet()
            where x["Inputlocation"].Cast<int>() == 1
            select x["Inputvalue"].Cast<string>();

然后您可以简单地遍历users: -

foreach (var item in users)
{
    Console.WriteLine(item.Inputvalue); //This will print "Hello"
}

虽然恕我直言总是更好地创建一个匹配类型,以避免在指定列名时因拼写错误而发生的任何异常。

public class User
{
    public int Inputlocation { get; set; }
    public string Inputvalue { get; set; }
}

这是查询: -

var users = from x in book.Worksheet<User>()
            where x.Inputlocation == 1
            select x;

答案 1 :(得分:0)

这与我正在做的有点相似,但在某种程度上回答了这个问题。但请不要@RahulSingh说的话。

还与代码中的@Chris 1相关。我认为这篇文章的创造者说他不想改变他职能中的任何事情。他想要的唯一更改是Console.WriteLine(x["1"]);Console.WriteLine(x["2"]);来获取Inputvalue

Reference to my post