0

我想知道如果我有一个 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 是“Hello”。我是否以正确的方式指定查询?此外,我稍后在我的代码中一次又一次地使用它。所以请为此提供更好的解决方案。

4

2 回答 2

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;
于 2015-12-09T18:17:56.430 回答
0

这有点像我正在做的,但在某种程度上回答了这个问题。但不要像@RahulSingh 所说的那样。

也与代码中的@Chris 1 相关。我认为这篇文章的创建者是说他不想改变他的功能中的任何东西。他唯一想要的改变是Console.WriteLine(x["1"]);或者Console.WriteLine(x["2"]);得到 Inputvalue

参考我的帖子

于 2015-12-10T18:06:00.140 回答