在LINQ中写出'AND'和'OR'

时间:2012-07-30 10:25:17

标签: c# linq

如何在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;

6 个答案:

答案 0 :(得分:2)

取决于您使用的语言

C#中,&&用于 AND ||用于
VB AND用于 AND OR用于 OR

现在,您使用的语言是什么?

更新1

你想先加入两张桌子吗?

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

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

enter image description here

答案 1 :(得分:2)

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

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

答案 2 :(得分: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;

答案 3 :(得分: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; 

答案 4 :(得分:1)

Linq doesen不会这样工作,你首先必须结合你的两套。

var allScores = scores.Concat(morescores);

然后你就可以了,

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

如果您想在scoresmorescores之间排除重复项,请使用Union而不是Concat

答案 5 :(得分: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;