0

你如何在 LINQ 中写出“AND”和“OR”。我试过'AND'关键字以及'&&'和','。

我也用谷歌搜索了它,并没有遇到任何有帮助的东西。

任何帮助将不胜感激谢谢

编辑:

    int[] moreScores = new int[]{12,12,45,45,87,96};
int[] scores = new int[] { 97, 92, 81, 60 };
        // Define the query expression.
        IEnumerable<int> scoreQuery =
            from score in scores
    and moreScores
            where score > 80
            select score;
4

6 回答 6

2

这取决于您使用的语言

C#中,&&对于AND||对于OR
VB中,AND对于ANDOR对于OR

现在,您使用什么语言?

更新 1

你想先加入这两个表对吗?

UNION方法从返回集中排除重复项。

IEnumerable<int> scoreQuery =  from score in (scores.Union(moreScores))
                               where score > 80
                               select score;

在此处输入图像描述

于 2012-07-30T10:27:21.977 回答
2

如果你给我们正确的例子,你应该使用 Union,而不是 AND:

    IEnumerable<int> scoreQuery =
    from score in scores.Union(moreScores)
    where score > 80
    select score;
于 2012-07-30T10:41:25.310 回答
1

您不能通过在它们之间放置 AND 来简单地查询两个不同的数组。试试下面的代码:

var moreScores = new int[] { 12, 12, 45, 45, 87, 96 };
var scores = new int[] { 97, 92, 81, 60 };
var scoreQueryResults =
    from score in (scores.Union(moreScores))
    where score > 80
    select score;

还有一些 Linq 的通用示例。

var list = new List<string>();
// ... add some items

// Searching for the strings that starts with J AND ends K
// Method Chain Format
var results1 = list.Where(item => item.StartsWith("J") && item.EndsWith("K"));
// Query Format
var results2 = from item in list
                where item.StartsWith("J") && item.EndsWith("K")
                select item;

// Searching for the strings that starts with J OR K
// Method Chain Format
var results3 = list.Where(item => item.StartsWith("J") || item.StartsWith("K"));
// Query Format
var results4 = from item in list
                where item.StartsWith("J") || item.StartsWith("K")
                select item;
于 2012-07-30T10:33:03.263 回答
1

我想你正在尝试写这样的东西......

int[] moreScores = new int[]{12,12,45,45,87,96}; 
int[] scores = new int[] { 97, 92, 81, 60 };         
// Define the query expression.         
IEnumerable<int> scoreQuery = from score in scores.Union(moreScores) 
                              where score > 80             
                              select score; 
于 2012-07-30T10:41:52.753 回答
1

Linq 不是那样工作的,你首先必须将你的两组结合起来。

var allScores = scores.Concat(morescores);

那么你可以这样做,

var scoreGreaterTham80 = allScores.Where(s => s > 80);

如果您想排除之间的重复项scoresmorescores使用Union而不是Concat.

于 2012-07-30T10:47:18.997 回答
1

你想要的是Concat因为我假设你通常不想排除任何分数Union,这会做。

int[] moreScores = new int[] { 12, 12, 45, 45, 87, 96 };
int[] scores = new int[] { 97, 92, 81, 60 };

IEnumerable<int> scoreQuery = from score in moreScores.Concat(scores)
                              where score > 80
                              select score;
于 2012-07-30T10:49:04.513 回答